728x90
호이스팅이란?
간단하게 말하면 런타임시에 선언이 최상단으로 끌어올려지는 현상을 말한다.
예를 들어 var로 선언한 변수가 초기화가 되어 있지 않다면 undefined로 최상단에 끌어올려지는 현상이다. (let, const도 호이스팅 되지만 var 처럼 선언과 동시에 undefined로 초기화 되지는 않는다. )
발생되는 문제
호이스팅으로 인해 예상하지 못하는 문제가 발생할 수 있다.
var sum;
function sum() {
return 7 + 5;
}
console.log(sum()); // 12
console.log(typeof sum) // function
var sum;
console.log(sum()); // 12
console.log(typeof sum) // function
function sum() {
return 7 + 5;
}
맨 위에 선언한 sum 변수가 출력되는 것이 아니라 sum 함수에 대한 값들이 출력되는데 그 이유는 함수 자체도 호이스팅 되어 미리 선언된 변수가 덮어씌워지기 때문이다.
그래서 보통 const를 사용하여 익명함수를 할당하는 방법을 사용한다! (함수표현식)
728x90
'Javascript' 카테고리의 다른 글
[클린코드 자바스크립트] 임시변수 제거하기 (0) | 2021.11.11 |
---|---|
자바스크립트 Event Loop (0) | 2021.06.02 |
타입스크립트 - Utility Type & Mapped Type (0) | 2021.04.13 |
타입스크립트 - 타입 가드 (0) | 2021.04.12 |
타입스크립트 - 타입 추론 & 단언 (0) | 2021.04.12 |
댓글