welcome to Cheeto's blog

0%

JavaScript核心篇:let 與 const 暫時性死區(TDZ)

let 與 const 暫時性死區(TDZ)

  1. let 一樣會有創造階段
  2. 但是從創造到執行階段會出現暫時性死區(TDZ),這個區域無法呼叫該變數
  3. 有創造到執行的概念,但是它不會預先出現 undefined 而是會跳出 Error

文件不會表明這與 varhoisting 相同

1
2
3
4
{
console.log(Ming);
let Ming = '杰倫';
}

這邊會跳出錯誤 ↓

let 與 const 暫時性死區-1

在裡面其實它的執行是這樣的 ↓ ↓ ↓

1
2
3
4
5
6
// 創造階段
let Ming; // 暫時性死區(TDZ),無法呼叫

// 執行階段
console.log(Ming);
Ming = '杰倫';

接下來看下一個範例

1
2
3
4
console.log(typeof a);
console.log(typeof myName);

let myName = '';

來看看差別在哪裡 ↓ ↓ ↓

let 與 const 暫時性死區-2

這邊可以看到我們並沒有辦法在 let 宣告之前去取得它,就算是 typeof 也是會跳錯的哦!