본문 바로가기
Javascript

[클린코드 자바스크립트] 호이스팅 주의하기

by 안자바먹지 2021. 11. 11.
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

댓글