1. 相同點
if 判斷語句中,兩者都會被轉換為false
2. 不同點
-
Number轉換的值不同,Number(null)輸出為0, Number(undefined)輸出為NaN
- null表示一個值被定義了,但是這個值是空值
-
作為函數的參數,表示函數的參數不是對象
-
作為對象原型鏈的終點 (Object.getPrototypeOf(Object.prototype))
- 定義一個值為null是合理的,但定義為undefined不合理(var name = null)
-
- undefined表示缺少值,即此處應該有值,但是還沒有定義
-
變量被聲明了還沒有賦值,就為undefined
-
調用函數時應該提供的參數還沒有提供,該參數就等於undefined
-
對象沒有賦值的屬性,該屬性的值就等於undefined
-
函數沒有返回值,默認返回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
詳情參考:http://www.ruanyifeng.com/blog/2014/03/undefined-vs-null.html
