回覆列表
  • 1 # ProblemBoy

    要回答這個問題,就需要先了解下什麼是 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 的時候,訪問變數下的任意成員都會報錯,所以在平時開發中,一定要注意這種情況。

  • 中秋節和大豐收的關聯?
  • 明朝是被李自成滅亡的,還是被清朝滅亡的?