ㅇㅇㅈ Blog

프론트엔드 수행중

0%

JS-Hoisting

호이스팅 (Hoisting)

  • 코드가 실행이 되기 전에 먼저 선언해둔 변수&함수를 조사하여 메모리에 저장해둔다(유효 범위의 최상단에 선언한다)
  • 자바스크립트에서 호이스팅시 변수의 선언과 초기화(undefined으로) 같이 시킨다

var & let

var는 전역변수와 지역변수의 개념이 확실치 않다

var

  1. 함수만 지역변수로 호이스팅이 되고 나머지는 다 전역변수로 올라간다
  2. 같은 이름의 변수를 여러번 생성가능하다
1
2
3
4
5
6
7
8
9
10
11
for (var i = 1; i < 5; i++) {
console.log(i)
}
console.log(i)
// 1 2 3 4 5 가 출력된다

var a = 1
console.log(a)
var a = 2
console.log(a)
// 1 2 가 출력된다

let

  1. let도 호이스팅이 된다
  2. 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)
// 역시 에러가 발생한다