在大多數計算機語言中,NULL表示有且僅有一個表示"無"的值,而在js中,無的值有兩個:undefined和null。函數
類似處:prototype
一、undefined和null在if語句中,都會被自動轉爲false對象
二、相等運算符甚至直接報告二者相等原型鏈
區別:get
一、null表示"沒有對象" 原型
(1) 做爲函數的參數,表示該函數的參數不是對象。io
(2) 做爲對象原型鏈的終點。console
Object.getPrototypeOf(Object.prototype)// nullfunction
二、undefined表示"缺乏值",就是此處應該有一個值,可是尚未定義。dva
(1)變量被聲明瞭,但沒有賦值時,就等於undefined。
(2) 調用函數時,應該提供的參數沒有提供,該參數等於undefined。
(3)對象沒有賦值的屬性,該屬性的值爲undefined。
(4)函數沒有返回值時,默認返回undefined。
vari;i// undefinedfunctionf(x){console.log(x)}f()// undefinedvaro=newObject();o.p// undefinedvarx=f();x// undefined