[JS] hoisting

호이스팅(hoisting)이란, 자바스크립트에서 변수의 선언, 함수의 선언 등을 코드의 맨 위로 올려주는 것이라고 간단하게 설명할 수 있다. 예시를 보면

console.log(temp);

var temp = 3;

>> 이 경우 console에는 undefined가 나타난다.

변수 선언 타입 중 var는 호이스팅이 적용되는 타입이며 아래와 같이 호이스팅이 되기 때문에 undefined가 출력이 된다.

var temp;

console.log(temp)

temp = 3;

변수 선언 타입 중 let은 var과 다르게 호이스팅이 일어나지 않는데, 

console.log(temp);

let temp = 3;

>> 이 경우 console에는 에러가 출력된다.

함수에도 비슷한 사례가 있다.

sum(1,2);

function sum(a, b) {
 console.log(a+b)

}

함수 sum()이 선언되기 이전에 사용했음에도 불구하고 잘 작동한다. 호이스팅이 일어났기 때문이다. 하지만 아래와 같은 상황에서는 호이스팅이 일어나지 않는다.

sum(1,2);

let sum = function(a, b) {
 console.log(a+b);

}

>> 에러 발생

댓글을 작성해보세요.

채널톡 아이콘