什麼是 TDZ(Temporal dead zone)?
💡先講結論:
意指 let 、const 宣告變數的「前方區域」,如果試圖在此區域取得值,則會出現 ReferenceError 的提示。
傳統的 var 宣告,若是先取值再宣告 ⇒ 不會出錯,會出現「Undefined」。
但是在 let、const 宣告的情況下,先取值再宣告的話 ⇒ 會出現「Uncaught ReferenceError:Cannot access ‘xxx’ before initialization」(依瀏覽器版本可能出現不同訊息),
也就是說 let、const 無法在初始化之前就取得該變數,因此開發者會很清楚不該這麼做~
let、const 一樣有「提升」的概念,只是沒辦法存取裡面的值而已!
而 var 是出現「undefined」,可以存到值,只是值是 undefined。