JavaScript兩個表示”無”的值:undefined和null。我在平時只是null用的多一點,undefined只是在報錯中經常遇到。下面針對這兩個數據類型的異同做一下詳細的比較。
undefined和null在if語句中,都會被自動轉爲false,相等運算符直接報告兩者相等。
!null==!undefined==true
- null表示”沒有對象”,即該處不應該有值。典型用法是:
(1) 作爲函數的參數,表示該函數的參數不是對象。
(2) 作爲對象原型鏈的終點。
Object.getPrototypeOf(Object.prototype) // null
- undefined表示”缺少值”,就是此處應該有一個值,但是還沒有定義。典型用法是:
(1)變量被聲明瞭,但沒有賦值時,就等於undefined。
(2) 調用函數時,應該提供的參數沒有提供,該參數等於undefined。
(3)對象沒有賦值的屬性,該屬性的值爲undefined。
(4)函數沒有返回值時,默認返回undefined。
var i;
i // undefined
function f(x){console.log(x)}
f() // undefined
var o = new Object();
o.p // undefined
var x = f();
x // undefined