1. 程式人生 > >JS中原始類型Null和Undefined

JS中原始類型Null和Undefined

應該 讀取 exist 表示 即使 asc 不同 type 通過

Undefined類型只有一個值,即undefined。當聲明的變量還未被初始化時,變量的默認值為undefined。
Null類型也只有一個值,即null。null用來表示尚未存在的對象,常用來表示函數企圖返回一個不存在的對象。

js 代碼
let testTypeNum;
alert(testTypeNum ==undefined); //output "true"

代碼顯示為true,代表testTypeNum的值即為undefined,因為沒有初始化它。

js 代碼

alert(null == document.getElementById(‘noExistElement‘)); //True

頁面上不存在id為"notExistElement"的DOM節點時,該段代碼顯示為"true",因為在嘗試獲取一個不存在的對象。

js 代碼

alert(typeof undefined); //output "undefined"
alert(typeof null); //output "object"

第一行代碼,undefined的類型為Undefined;
第二行代碼,null的類型是Object?
這是JavaScript最初實現的一個錯誤,後來被ECMAScript沿用下來。我們可以解釋為,null即是一個不存在的對象的占位符,在實際編碼時還是要註意這一特性。

js 代碼

alert(null == undefined); //output "true"

ECMAScript認為undefined是從null派生出來的,所以把它們定義為相等的。但是,如果在一些情況下,我們一定要區分這兩個值,那應該怎麽辦呢?可以使用下面的兩種方法。

js 代碼

alert(null === undefined); //output "false"
alert(typeof null == typeof undefined); //output "false"

null與undefined的類型是不一樣的,所以輸出"false"。而===代表絕對等於,在這裏null === undefined輸出false。
總結:未定義的值和定義未賦值的為undefined,null是一種特殊的object,NaN是一種特殊的number。

1)undefined與null是相等;(2)NaN與任何值都不相等,與自己也不相等。
3)undefined 屬性用於存放 JavaScript 的 undefined 值
4)無法使用 for/in 循環來枚舉 undefined 屬性,也不能用 delete 運算符來刪除它。

undefined 不是常量,可以把它設置為其他值。

當嘗試讀取不存在的對象屬性時也會返回 undefined。
5)值等價於 undefined 運算符認為 運算來測試某個值是否是未定義的.(註:不能通過與 undefined 做比較來測試一個變量是否存在,即使可以檢查它的類型是否為“undefined”)
對象屬性不存在, 聲明了變量但從未賦值都會返回undefined。

6)在 Jscript 中數據類型 null 只有一個值:null。關鍵字 null 不能用作函數或變量的名稱。

包含 null 的變量包含“無值”或“無對象”。換句話說,該變量沒有保存有效的數、字符串、boolean、數組或對象。可以通過給一個變量賦 null 值來清除變量的內容。

註意,在 Jscript 中,null 與 0 不相等(與在 C 和 C++ 中不同)。同時應該指出的是,Jscript中 typeof 運算符將報告 null 值為 Object 類型,而非類型 null

JS中原始類型Null和Undefined