호이스팅 (Hoisting)
- 코드가 실행이 되기 전에 먼저 선언해둔 변수&함수를 조사하여 메모리에 저장해둔다(유효 범위의 최상단에 선언한다)
- 자바스크립트에서 호이스팅시 변수의 선언과 초기화(undefined으로) 같이 시킨다
var & let
var는 전역변수와 지역변수의 개념이 확실치 않다
var
- 함수만 지역변수로 호이스팅이 되고 나머지는 다 전역변수로 올라간다
- 같은 이름의 변수를 여러번 생성가능하다
1 2 3 4 5 6 7 8 9 10 11
| for (var i = 1; i < 5; i++) { console.log(i) } console.log(i)
var a = 1 console.log(a) var a = 2 console.log(a)
|
let
- let도 호이스팅이 된다
- Temporal Death Zone(TDZ) 만들어 변수의 선언문이 나오기전까지는 변수에 접근할수 없다
1 2 3 4 5
| for (let i = 1; i < 5; i++) { console.log(i) } console.log(i)
|
1 2 3 4 5
| let a = 1 console.log(a) let a = 2 console.log(a)
|