JS notice: JavaScript 與 undefined
本篇文章會稍微講解 undefined 與 not defined 的差異。
undefined
先來看一個例子:
1 | var a = "Hello World"; |
當宣告一個變數 a,並指定一個值給它時,再用 console.log
印出 a,不意外的得到賦予它的值。
但如果把值去掉,再次看 a 會得到什麼?
1 | var a; |
結果得到 undefined。
not defined
那麼如果把 var 跟值去掉的話,只留下 a 會發生什麼事?
1 | a; |
會發生錯誤,錯誤訊息為 a is not defined。
這邊則會有一個疑問,not defined 跟 undefined 是不同的嗎?
這個部份有在 執行環境:創造與提升 提過,所有 JavaScript 的變數,在一開始都會被設定為 undefined,而 undefined 是 JavaScript 內建的一個特殊的值,表示這個值尚未被定義
這邊可以用判斷式來測試一下:
1 | var a = "Hello World"; |
結果賦予 a 值的情況下,會出現 ‘a is defined’。
而把值去掉的話:
1 | var a; |
則是會出現 ‘a is undefined’。
undefined 與 not defined 差在哪?
接著把 var 去掉,只留下 a,則會出現錯誤,a is not defined。
這是因為執行環境被創造時,沒有在記憶體中找到 a。
而宣告 var a
時,a 在創造階段就被放進記憶體中,雖然沒有賦予它值,但是確實先給它一個特殊的初始值 undefined,已經在記憶體中佔據了一席之地。
那麼可以設定值為 undefined 嗎?
理論上是可以的,來測試看看:
1 | var a = undefined; |
雖然 a 給它值,可能想說會是 ‘a is defined’,但是最後的結果會是 ‘a is undefined’。
所以這邊就會有問題,萬一想要除錯的話,可能會發生混亂,所以這裏需要注意不要給予賦予變數 undefined 這個特殊關鍵字。
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Bucky's Code Journey!