hoisting
호이스팅은 자바스크립트에서 함수나 변수를 해당 범위 내 최상위로 끌어올리는 행위라고 합니다. 말로 설명하면 애매하니 코드를 보면 foo
라는 변수가 선언되어 있지 않지만 아래 쪽에 선언된 변수값을 인지해 처리합니다. 사실 아래 코드에서는 var
를 생략한 경우 foo
라는 변수를 전역 변수로 처리하기 때문에 좀 애매하긴 합니다. if
문이 없다고 생각하는 것이 좋을듯..
if (true) {
foo = 2;
console.log(foo); //2
var foo;
}
하지만 let
을 사용할 경우에는 좀 다릅니다. 변수가 아직 선언되지 않았다고 오류로 처리합니다.
if (true) {
foo = 2; // Uncaught ReferenceError: foo is not defined
console.log(foo); //2
let foo;
}