不管是let或var,若宣告變數時沒有給值,則變數會被給予JavaScript中的特殊值--undefined,代表這個變數沒有值的意思。但是,我們說過JavaScript是在高層要求下緊急設計出來的腳本語言。所以在設計上或說在JavaScript的規格上,若試圖取得沒有宣告過的不存在的物件,JavaScript並不會回傳notfined,而是會回傳undefined。
若使用typeof來取得undefined的型態,會得到undefined的結果。
我想可以理解JavaScript中宣告一個名為undefined的變數,其值為undefined型別。
任何未給值的變數,預設JavaScript會給其值為undefined。
在ES5以前(古早瀏覽器中IE 6 7 8之類的?),undefined不是保留字,也不是常數,JavaScript並不會阻止我們宣告名字叫undefined的變數。
此圖是用IE模擬IE8的執行畫面
直到2009年ES5發表才定義了undefined的是undefined,其值不可寫、不可列舉、不可給值。
下圖是IE11上的執行結果
JavaScript中還有另一格特殊值null,代表沒有物件。要先宣告變數給值於物件,若此變數之後不須參考此物件,就可以給null值。使用typeof null會得到object這個型態。null是用來表示物件->沒有 的意思。
通常我們看到null都是使用http連線查詢或請求時,若無結果會得到null。