본문 바로가기

ES6

dead zone

반응형

temporal dead zone은 let이랑 같이 소개되는 개념이다.

 

var name = 'aaa'

console.log(name)

를 하면 콘솔창에 당연히 aaa가 뜬다.

 

console.log(name)

var name = 'aaa'

그런데 둘의 자리를 바꾸면 undefined가 뜬다.

 

자바스크립트는 위에서부터 아래로 코드를 실행하기때문에,

이론상으론 존재하지 않는걸 콘솔로그로 출력하려한것이다.

 

console.log(name)

다른 것 없이 이것만 하면 에러가 난다.

에러가 나는 이유는 자바스크립트가 호이스팅이란걸 해주기 때문이다.

 

var name

console.log(name)

name = 'aaa'

undefined가 뜬다. 실제로는 에러가 떠야한다.

어플리케이션을 만들때 undefined가 뜬걸 보고 무엇이 잘못된걸까 한참 고민하게 될 것이다.

 

console.log(name)

let name = 'aaa'

let으로 변수 선언하면 name이 정의되지않았다고 에러가 뜬다.

자바스크립트가 호이스팅을 하지않는다.

 

var 대신에 let을 사용하고, 에러 메세지가 뜬 것을 보고 해결하는 것은

var를 사용하고 undefined가 떴을때 에러를 해결하는 것보다 훨씬 쉬울 것이다.

이게 바로 let의 temporal dead zone이다.

반응형

'ES6' 카테고리의 다른 글

find() - includes()  (0) 2020.09.14
arrow function을 사용하지 않아야할 때. 'this'  (0) 2020.09.09
arrow function  (0) 2020.09.09
block scope  (0) 2020.09.09
let, const  (0) 2020.09.09