要回答這個問題,就需要先了解下什麼是 undefined,我們從 ECMA-262 標準中看下說明:
簡單翻譯下就是:Undefined 型別未定義變數時值的型別,而 undefined 值表示一個變數未賦值時候的值。這裡可以看到的是兩個概念,分別是 Undfeind 型別和 undefined 值。
下面我們詳細瞭解下這兩個概念,眾所周知,Javascript 中有很多資料型別,比如 String 表示字串,Number 表示數值,Object 表示物件,當然還有很多,這裡不一一列舉了,那麼 Undefined 型別就是其中之一,表示未定義的值的型別。
那麼 undefined 值表示的是一個變數或者物件未初始化時候的值,下面我們可以舉幾個例子:
透過 var 或者 let 宣告的變數,在未初始化或者未賦值時訪問為 undefined
Object 中訪問未定義或者未初始化的值為 undefined
Array 中訪問不存在或者未賦值的下標為 undefined
下面在介紹一種特殊的例子:
var a = null
if (a == undefined) { console.log("Undefined") }
上述程式碼執行結果會輸出 “Undefined”,注意這裡使用的是 == 作比較,而不是 ===。所以說在弱型別比較時,undefined 和 null 是相等的,這一點需要是平時開發中注意。
最後要說的是,變數值為 undefined 的時候,訪問變數下的任意成員都會報錯,所以在平時開發中,一定要注意這種情況。
要回答這個問題,就需要先了解下什麼是 undefined,我們從 ECMA-262 標準中看下說明:
Undefined type:type whose sole value is the undefined value undefined value:primitive value used when a variable has not been assigned a value簡單翻譯下就是:Undefined 型別未定義變數時值的型別,而 undefined 值表示一個變數未賦值時候的值。這裡可以看到的是兩個概念,分別是 Undfeind 型別和 undefined 值。
下面我們詳細瞭解下這兩個概念,眾所周知,Javascript 中有很多資料型別,比如 String 表示字串,Number 表示數值,Object 表示物件,當然還有很多,這裡不一一列舉了,那麼 Undefined 型別就是其中之一,表示未定義的值的型別。
那麼 undefined 值表示的是一個變數或者物件未初始化時候的值,下面我們可以舉幾個例子:
透過 var 或者 let 宣告的變數,在未初始化或者未賦值時訪問為 undefined
var a // typeof a === "undefined"Object 中訪問未定義或者未初始化的值為 undefined
var obj = {} // typeof obj.a === "undefined"Array 中訪問不存在或者未賦值的下標為 undefined
var arr = [] // typeof arr[1] === ‘undefined’下面在介紹一種特殊的例子:
var a = null
if (a == undefined) { console.log("Undefined") }
上述程式碼執行結果會輸出 “Undefined”,注意這裡使用的是 == 作比較,而不是 ===。所以說在弱型別比較時,undefined 和 null 是相等的,這一點需要是平時開發中注意。
最後要說的是,變數值為 undefined 的時候,訪問變數下的任意成員都會報錯,所以在平時開發中,一定要注意這種情況。