본문 바로가기

Javascript14

이벤트위임, 버블링/캡처링, React17에서의 변경점 DOM DOM(Document Object Model)은 HTML, XML등의 문서를 트리 구조로 표현한 것입니다. 이 트리 구조는 요소(element), 속성(attribute), 텍스트(text) 등의 노드(node)로 구성되어 있습니다. DOM에서의 이벤트 처리는 이벤트 위임, 이벤트 버블링, 이벤트 캡처링 등의 개념을 이용해 구현됩니다. 표준 DOM이벤트에서 정의한 3가지 이벤트 흐름은 다음과 같습니다. 첫번째, 캡처링 단계는 이벤트가 하위 요소로 전파되는 단계 이며, 두번째 타깃 단계는 이벤트가 실제 타깃 요소에 전달되는 단계이고, 세번째는 버블링 단계로 이벤트가 상위 요소로 전파되는 단계 입니다. 이벤트 캡처링부터 알아보겠습니다. 이벤트 캡처링 이벤트 캡처링은 최상위 요소에서 하위 요소로 이벤.. 2023. 7. 20.
JavaScript 동작원리와 Event Loop, Queue, Web API 몇 달 전 자바스크립트의 콜스택, 힙, 가비지 컬렉터 등 관련 블로그 글을 퍼블리싱했었는데, 좀 더 깊게 자바스크립트 작동원리에 대해서 공부해 새롭게 글을 작성합니다. 중복된 내용이 있을 수 있습니다! 예전 글 ) https://imagineu.tistory.com/76 [Javascript] 콜스택(Call Stack), 메모리힙(Memory Heap), 가비지컬렉션, 메모리릭 그림으로 이해하기 Call Stack과 Heap 시작하기에 앞서 하나의 스레드 당 하나의 스택메모리를 사용하는데, 자바스크립트는 싱글스레드 언어이기 때문에 콜스택이라는 스택메모리 하나만 사용합니다. const a = 'Hello Worl imagineu.tistory.com 자바스크립트 엔진 자바스크립트는 스크립트 언어로서 자바.. 2023. 5. 26.
[Javascript] 콜스택(Call Stack), 메모리힙(Memory Heap), 가비지컬렉션, 메모리릭 그림으로 이해하기 Call Stack과 Heap 시작하기에 앞서 하나의 스레드 당 하나의 스택메모리를 사용하는데, 자바스크립트는 싱글스레드 언어이기 때문에 콜스택이라는 스택메모리 하나만 사용합니다. const a = 'Hello World!'; const b = [1, 2, 3]; const c = { id:'yoy', password:1234 }; const d = function(){ console.log() }; 이런 코드가 있다고 했을때, 자바스크립트 엔진에서 Call Stack 영역과 Heap 영역에서 어떻게 동작하는지 알아보도록 하겠습니다. 우선 각 변수 a, b, c, d는 call stack의 실행컨텍스트 렉시컬환경이라는 곳에 { name : value } 형태로 저장됩니다. 비록 초기화 단계에서는 { 변수.. 2022. 3. 16.
[Typescript] Any, Void, Null, Undefined 정리 any 이렇게 일반 javascript처럼 작성해주면 Parameter 'arg' implicitly has an 'any' type.(7006) 위와 같은 에러메시지가 뜬다. 그리고 다음과 같이 : any 라는 타입을 명시해주면 에러메세지가 사라진다. any 타입은, 말그대로 모든 타입을 받을 수 있다고 명시해줌으로써 "타입체크를 비활성화" 해주는 역할을 하는데, 그래서 타입스크립트를 사용하는 한 any 타입으로 명시해주는 것은 좋은 방법이 아니라고 할 수 있다. void 그리고 function 안에서 return을 선언해주지 않거나, 그저 return; 만 적어준다면 return 타입으로는 :void가 뜰 것이다. 프로그래밍을 하다보면 void라는 단어가 익숙할텐데, 아무 값도 return 해주지 않.. 2022. 1. 26.
원시값과 참조값, 얕은복사와 깊은복사, Object 깊은복사 방법 얕은복사와 깊은복사의 차이점을 이해하려면 우선 원시값과 참조값의 차이에 대한 이해가 필요하다. 원시값 원시값이란 모든 연산이 "실제값 자체"를 갖고 이루어진다. 자바스크립트의 원시값으로는 String, Number, Boolean, Null, Undefined가 있다. let num1 = 1, const num2 = num1; console.log(num2); // 1 num1 = 20; console.log(num2); // 1 다음과 같이 num1의 값만을 선언해주고, num2가 num1이 갖고 있는 "값 자체인" 1을 할당받았으므로 num2에 할당한 뒤 num1의 값을 바꿔주더라도 num2에서는 아무런 영향을 받지 않는다. 참조값 참조값이란 대표적으로 객체, 배열, 함수가 있으며, 모든 연산이 해당.. 2021. 11. 20.
[ES6+] Promise와 then, catch, finally, all, race const obj = new Promise((resolve, reject)=>{//obj라는 변수에 Promise라는 인스턴스를 생성하여 할당 // resolve와 reject 라는 이름의 함수를 만들어서 해당 인스턴스에 설정 // 처리가 성공하면 resolve가, 실패하면 reject가 호출됨 console.log("Promise 읽는 중") resolve("성공"); reject("실패"); }) obj.then( (value)=>{ console.log("결과는", value) }, (reason)=>{ console.log("결과는", reason)} ); console.log("끝까지 읽음") // 끝까지 읽음 // Promise 읽는 중 // 결과는 성공 해당 코드를 위에서부터 하나하나 보면,.. 2021. 10. 23.
숫자 뒤집기 + 소수 구하기 보호되어 있는 글 입니다. 2021. 10. 22.
문자열에서 특정 문자와 최소 거리 구하기 보호되어 있는 글 입니다. 2021. 10. 22.
거꾸로 해도 똑같은 배열 (팰린드롬) 보호되어 있는 글 입니다. 2021. 10. 22.
거꾸로 해도 똑같은 문자열 (회문문자열/팰린드롬) 보호되어 있는 글 입니다. 2021. 10. 22.
호이스팅(hoisting) 이유와 원리 3줄 요약 + 설명 호이스팅이란 , 변수나 함수의 호출 코드가 선언 코드보다 아래쪽에 있음에도 불구하고 에러가 발생하지 않고, 마치 선언 코드가 호출 코드보다 더 위에 선언된 것과 같이 동작하는 특성을 호이스팅(Hoisting) 이라고 한다. 그리고 호이스팅은 ES6+의 let과 const 변수에서는 할 수 없고, 오직 var 변수에서만 호이스팅이 일어난다. 호이스팅이 발생하는 이유는 다음과 같다. 1. 자바스크립트 엔진은 함수선언문 해석 -> 변수 초기화 -> 코드실행 순서로 진행된다. 2. 코드를 실행할 땐 이미 함수 선언문과 변수가 생성되어있는 상태이기 때문에 3. 어디에서든 함수나 변수를 호출할 수 있다. (심지어 제일 위에서도!) 자바 스크립트 엔진은 코드를 맨 위에서부터 읽어내려오기 전에 이미 실행 컨텍스트에 식.. 2021. 10. 21.
[ES6+]화살표 함수(=>) 특징 3줄 요약 + 설명 화살표함수는 코드 형태는 (param)=> { 함수코드 } 와 같지만, 다음과 같이 작성할 수도 있다. 함수 블록{ } 과 return 작성을 생략해도 된다. const test = (num1, num2) => num1 + num2; console.log(test(10,20)); //30 하지만 내부에 아무 코드 없이 함수 블록 { } 만 작성하면 undefined 를 반환하게 된다. const test = (num1) => {}; console.log(test(1)); // undefined 또한 함수 블록 { }을 소괄호()로 감싸게 되면 { key : value } 값으로 반환하게 된다. const test = (param) => ({myName : param}); const result = tes.. 2021. 10. 20.
[Typescript] 타입스크립트를 "사용해야 하는" 이유 (+ 온라인에서 연습하기) 자바스크립트는 전세계의 97% 이상의 웹사이트에서 사용되고 있는 만큼 가장 인기 있는 프로그래밍 언어 중에 하나입니다. 자바스크립트는 웹사이트를 동적으로 만들 수 있고 다른 복잡한 기능들을 구현가능하게 해주기 때문에 웹사이트에서는 거의 필수적인 존재라고 볼 수 있습니다. 하지만 타입스크립트 또한 자바스크립트 못지않게 그 인기를 빠르게 끌어 올리는 중인데요. 지금 당장 구직사이트에서 프론트엔드 개발자만 검색해봐도 많은 IT기업들은 타입스크립트 사용자를 우대하거나 필수로 하고 있는 것을 볼 수 있습니다. 타입스크립트는, 자바스크립트 기반으로 추가적인 코드작성 ( 타입 지정 등) 을 해준 후 다시 자바스크립트로 컴파일 되어 사용되어지기 때문에 자바스크립트 슈퍼셋(superset) 같은 개념입니다. 결국 자바스.. 2021. 10. 19.
[ES6+] var, let, const 쉽게 이해하기! 3줄요약 + 설명 let 변수와 const는 ES6 이후 스펙에서 새롭게 등장한 변수이다. 그래서 브라우저 배포용 코드같은 경우는 아직도 var 변수만 사용되는 경우도 있다고 한다. var, let, const 를 구분하는 가장 중요한 점을 요약하자면, 1. 값 변경 가능 유무 2. 스코프 범위 3.호이스팅 가능 유무 이다. 그리고 우선순위는 const -> let -> var 이라고 하니 최대한 우선순위에 맞춰서 써야하겠다! 1. 값 변경 가능 유무 var과 let은 값이 선언된 이후에 값을 변경할 수 있지만, const는 생성할 때 선언된 초기값을 변경할 수 없다. 2. 함수스코프 vs 블록스코프 var은 함수 스코프를 가지지만, let과 const 변수는 블록 스코프{ }를 가진다. 3. 호이스팅 가능 유무 var은.. 2021. 10. 19.