호이스팅
호이스팅에 대해서 설명하세요
함수 안의 선언들을 유효 범위 최상단으로 끌어올리는(hoist) 것.
따라서, 선언 전에 사용이 가능하다. 단, 선언만 끌어올리는 것이고 초기화는 하지 않기 때문에, 끌어올린 변수의 값은 undefined이다.
console.log(x); // 'undefined'
var x = 1;
// 위 코드의 호이스팅 동작.
var x; // 변수 x 선언.
console.log(x); // 'undefined'
x = 1; // 초기화
선언 끌어올리기?
var와 함수선언문이 대상이며, let/const, 함수표현식은 호이스팅이 일어나지 않는다.
let, const의 정의가 평가되기까지 초기화가 되지 않는다는 의미이지. 호이스팅이 되지않아 정의가 되지 않는다는 의미와는 다르다고 한다. (임시적인 사각 지역과 오류)
function do_something() {
console.log(bar); // undefined
console.log(foo); // ReferenceError
var bar = 1;
let foo = 2;
}
결론
가독성과 유지보수를 위해 호이스팅이 일어나지 않도록 하자. let/const, 함수표현식을 쓰자. (참고)
그 외 내용들
호이스팅 우선 순위
변수가 함수보다 위로 끌어올려진다.
Written by Justinausgithub.com/justinaus