在 JavaScript 中,使用 var 宣告變數,在宣告前就使用該變數會出現 undefined
如果是使用 let 或 const 宣告變數或常數,在執行宣告前就使用則會出現 ReferenceError 例外:
已經被宣告,但是因為程式碼執行的順序,在還沒有執行到宣告(初始化)的部分就使用該變數/常數。
在 該值的作用域開始 到 宣告(初始化) 的這個區域就稱為 TDZ 。
和使用 var 宣告,在宣告前就使用,導致該值出現 undefined 相比,在 TDZ 使用該值而出現 ReferenceError 例外能夠讓我們快速/明顯的發現程式碼錯誤,避免花費多餘的時間。
這也是我們應該要使用 let, const 來宣告變數, 常數的原因之一。
文章撰寫中...請稍後...
參考資料:
let
What is the Temporal Dead Zone (TDZ) in JavaScript?
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?
感謝教學~
回覆刪除