반응형
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 |