對於undefined和null我一直知道他們有不少區別,也知道一點關於他們的區別,但卻不具體系統,所以總結了一下,主要心得以下:函數
咱們要區分它們,首先要明確這兩個值所表明的意義:code
具體表現以下:對象
a; console.log(a); //Uncaught ReferenceError: a is not defined var b = null; console.log(b); //null
而它們出現的情景也各不相同,具體總結以下:ip
null:即表示爲空,沒有對象。原型鏈
undefined:表示缺乏值,此處應該有值,但未定義。原型
var x; var y = null; console.log(x == y); //ture console.log(x ===y); //false
在上面的代碼中 == 會繼續類型轉換,且值是相等的,因此會得出 ture;而在
=== 中則不會發生類型轉換因此得出的是 false。所以undefined和null的值相等而類型不相等。console
1+null //1 1+undefined //NaN
這是因爲約定的不一樣所決定的。在規定中數字與undefined運算時,結果都NaN。在與null運算時,null始終爲0。變量
當咱們想要判斷一個值是否存在能夠這樣寫:object
objA.valueA === undefined
而當咱們想要判斷一個對象是否爲空時能夠這麼寫:總結
objA.valueA == null
最後借一波MDN總結的null和undefined的區別的代碼:
typeof null // object (由於一些之前的緣由而不是'null') typeof undefined // undefined null === undefined // false null == undefined // true null === null // true null == null // true !null //true isNaN(1 + null) // false isNaN(1 + undefined) // true