初學前端js經常搞不清楚null與undefined的區別,他們是js中的原始數據類型 1、undefined數據類型只有一個值undefined,當聲明的變數未初始化時,變數的預設值是undefined. 2、null也只有一個值null,用來表示尚未存在的對象,常用來表示函數企圖返回一個不存在的 ...
初學前端js經常搞不清楚null與undefined的區別,他們是js中的原始數據類型
1、undefined數據類型只有一個值undefined,當聲明的變數未初始化時,變數的預設值是undefined.
2、null也只有一個值null,用來表示尚未存在的對象,常用來表示函數企圖返回一個不存在的對象。
var a; console.log(a); //undefined
我們沒有對變數a進行初始化,所以輸出undefined。
console.log(document.getElementById("notExistElement"));
//null
當頁面中不存在id為notExistElement的元素時,輸出null,因為我們在嘗試獲取一個不存在的對象。
console.log(typeof undefined); console.log(typeof null);
//undefined
//object
第一行代碼很容易理解,undefined 的類型為undefined.但第二行代碼讓人很疑惑,null的類型怎麼變成object了呢?這其實是js最初實現的一個錯誤,後被ECMAscript沿用了下來,現在我們可以理解null為一個不存在的對象占位符
console.log(null==undefined);
//true
這裡就更讓我們疑惑了,為甚null==undefined會輸出true呢,ECMAscript認為undefined是從null派生出來的,所以定義相等。但在實際編程中想區分兩者,怎麼辦呢?
console.log(null===undefined); console.log(typeof null==typeof undefined); //false //false
"==="為全等於,不僅包括數值還包括類型,前面講了null和undefined類型不同,所以輸出false,第二行代碼同理。