空值和未定義

JavaScript 有多種表示缺少值的方法。這個頁面 會說明兩種最常見的方法:nullundefined 資料類型。

null

null 關鍵字代表刻意定義缺少值。null 是基本資料,但 typeof 運算子傳回的 null 是物件。 這項錯誤 才是第一版 JavaScript 以避免網路無法正常運作。

typeof null
> object

您可以將變數定義為 null 而是反映日後指派給它的值 或是明確缺少的值您也可以指派 null 值來清除舊值。

undefined

undefined 是指派給變數的原始值 或是針對最近宣告的 不會傳回有意義的值舉例來說,當您宣告 使用瀏覽器開發人員控制台中的函式:

function myFunction() {}
> undefined

函式會在其 return 陳述式時明確傳回 undefined 不會傳回任何值。

(function() {
    return;
}());
> undefined

比較「null」和「undefined

雖然 undefinednull 有部分重疊的功能,但 可以看出不同用途以最嚴格來說,null 代表一個值 先前可定義為「空白」undefined 代表缺少任何指派值。

nullundefined 大致相同,但不等於。 鬆散運算子會將不同型別的運算元強制轉換為布林值 值,因此 nullundefined 兩者皆可 false。嚴格等號運算子 會視為不同資料類型的運算元不相等。

null == undefined
> true

null === undefined
> false

與保留關鍵字 null 不同,undefined 是 「全域物件」。這是設計 JavaScript 開發初期做出了許多決定,而舊版瀏覽器還是 完全覆寫 undefined。在新式瀏覽器中 將 undefined 做為非全域範圍內的 ID,並覆寫其在 宣告的範圍請勿使用 undefined 做為 ID。這項服務 可能會導致非預期的行為,並可能混淆日後的維護人員 程式碼集

隨堂測驗

typeof null 會傳回什麼?

object
undefined
primitive
string