
호이스팅 (hoisting)은
"선언이 실제 코드 위치와 상관없이, 해당 스코프의 맨 위에서 처리되는 것 처럼 보이는 현상"
을 지칭한다.
console.log(a); // undefined
var a = 10;
console.log(a); // 10
console.log(a); // ReferenceError: a is not defined
let a = 10;
console.log(a);
결론 : var보다는 let과 const가 안전하다.
function foo() {})은 전체 함수 정의가 통째로 스코프 최상단으로 호이스팅 된다. 즉 함수 선언적 호출이 가능하다.foo(); // 'Hello'
function foo() {
console.log("Hello");
}
const foo = function() {})은 "변수만" 호이스팅되고, 실제 함수 값은 나중에 할당 되므로 할당 이전에 호출하면 에러가 나타난다.foo(); // ReferenceError: foo is not defined
const foo = function() {
console.log("Hello");
}
const foo = function() {
console.log("Hello");
}
foo(); // 'Hello'