JavaScript 全攻略:克服 JS 的奇怪部分 - 執行環境與詞彙環境(3)

JavaScript 全攻略:克服 JS 的奇怪部分筆記 - 第二章

undefined

JavaScript 與 undefined

在Execution Context (Creation phase) 創造之後,會產生全域物件this外部環境Hoisting現象(設定記憶體中的變數與function,而變數會在這個時候只派一個值,稱作undefined)

如下列程式碼所示,因為我們有宣告(declaration)a這個變數,把a設定在記憶體之後,會先指派一個undefined的值給a

但是若我們把第一行的a拿掉的話,則會顯示以下訊息:

瀏覽器告訴你說,因為你沒有設定a的記憶體空間,我找不到a喔!a完全沒有宣告(declaration),故才會產生這個錯誤訊息not defined!

所以undefined也是一個值。注意一個很重要的一點,永遠不要刻意去設定值為undefined,因為undefined可以有效幫你除錯,若刻意設定容易找不到未預期的錯誤。

如上圖所示,在第一行定義a的值是Hello world!但而後在第四行又把a設定成undefined,就會搞不清楚undefined是javascript幫你設定的還是你自己設定的!

比較表:

undefined not defined
變數定義之後先給的值 變數未定義所產生
是一個值 是錯誤訊息

參考資料

https://www.udemy.com/javascriptjs/learn/v4/overview