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

1 | let a = 1 |
