javascript에서는 선언 전에 변수를 사용할 수 있는 경우가 있는데, 호이스팅 때문이다
근데 호이스팅은 나쁜거다
var1 2 3 4 5 6 7 8 9 10 11 12 13 14
| function f() { console.trace(A); { console.trace(A); { console.trace(A); var A = 1; } console.trace(A); } console.trace(A); } f();
|
var
키워드를 사용하면 함수 최상위 스코프로 간다
- 변수 A는 선언도 안되었는데 잘 실행되는 이유이다
함수 호이스팅1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| f();
function f() { let a = 1; console.log(a); }
const g = function () { console.log(2); };
const h = () => { console.log(3); };
|
- 특히 함수는 함수 선언식? 일 때 호이스팅 된다
- 나는 처음 js를 배울 때,
var
을 const
, let
으로 대체해라고 해서
- 일단은 var을 안 쓰면서 공부를 해왔었는데,
- 그래선지 호이스팅 관련해서 골머리 아픈 적이 없었던 것 같다
참고