js hoisting 호이스팅

javascript에서는 선언 전에 변수를 사용할 수 있는 경우가 있는데, 호이스팅 때문이다
근데 호이스팅은 나쁜거다

var
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function f() {
console.trace(A); // undefined
{
console.trace(A); // undefined
{
console.trace(A); // undefined
var A = 1;
}
console.trace(A); // 1
}
console.trace(A); // 1
}
f();
// console.trace(A) // not work
  • var 키워드를 사용하면 함수 최상위 스코프로 간다
  • 변수 A는 선언도 안되었는데 잘 실행되는 이유이다
함수 호이스팅
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
f();
// g(); // not work
// h(); // not work

function f() {
let a = 1;
console.log(a);
}

const g = function () {
console.log(2);
};

const h = () => {
console.log(3);
};
  • 특히 함수는 함수 선언식? 일 때 호이스팅 된다
  • 나는 처음 js를 배울 때, varconst, let으로 대체해라고 해서
  • 일단은 var을 안 쓰면서 공부를 해왔었는데,
  • 그래선지 호이스팅 관련해서 골머리 아픈 적이 없었던 것 같다

참고

Author

chinsung

Posted on

2021-07-16

Updated on

2021-07-17

Licensed under

댓글