目前,null和undefined基本是同義的,只有一些細微的差異。javascript
null表示"沒有對象",即該處不該該有值。典型用法是:java
(1) 做爲函數的參數,表示該函數的參數不是對象。函數
(2) 做爲對象原型鏈的終點。spa
Object.getPrototypeOf(Object.prototype) // null
undefined表示"缺乏值",就是此處應該有一個值,可是尚未定義。典型用法是:prototype
(1)變量被聲明瞭,但沒有賦值時,就等於undefined。code
(2) 調用函數時,應該提供的參數沒有提供,該參數等於undefined。對象
(3)對象沒有賦值的屬性,該屬性的值爲undefined。token
(4)函數沒有返回值時,默認返回undefined。ip
(5)變量值位於後面加載時,默認返回undefined。原型鏈
var i; i // undefined function f(x){console.log(x)} f() // undefined var o = new Object(); o.p // undefined var x = f(); x // undefinedalert(a);var a=1;