JavaScript 什麼是 暫時性死區 TDZ (Temporal Dead Zone)

在 JavaScript 中,使用 var 宣告變數,在宣告前就使用該變數會出現 undefined
    
    console.log(data); // undefined
    var data = 1;
    

如果是使用 let 或 const 宣告變數或常數,在執行宣告前就使用則會出現 ReferenceError 例外:
    
    console.log(a); // Uncaught ReferenceError: Cannot access 'a' before initialization
    let a = 10;
    

已經被宣告,但是因為程式碼執行的順序,在還沒有執行到宣告(初始化)的部分就使用該變數/常數。
在 該值的作用域開始 到 宣告(初始化) 的這個區域就稱為 TDZ 。

和使用 var 宣告,在宣告前就使用,導致該值出現 undefined 相比,在 TDZ 使用該值而出現 ReferenceError 例外能夠讓我們快速/明顯的發現程式碼錯誤,避免花費多餘的時間。

這也是我們應該要使用 let, const 來宣告變數, 常數的原因之一。

文章撰寫中...請稍後...

參考資料:
let
What is the Temporal Dead Zone (TDZ) in JavaScript?

留言

張貼留言

如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com