兩種方法說明問題:函數
一、全等號===只考慮類型相同的值的比較,不一樣類型使用===進行比較,返回false對象
雙等號==會先將不一樣類型的值轉換爲相同的類型,而後使用全等號進行比較方法
使用雙等號會有兩個問題:(1)、轉換規則可能不是你指望的那樣類型轉換
(2)、因爲雙等號是寬容的,類型轉換的錯誤可能會被忽略掉。di
二、全等號===(嚴格等號)錯誤
比較兩個值,若是類型不相同,必定返回false;運算符
若是類型相同,則按照以下的規則進行比較:undefined
(1)、兩個都是undefined類型,返回true (undefined === undefined)
(2)、兩個都是null類型,返回true;(null === null)
(3)、兩個都是number類型
a、 若是有一個是NAN,則爲false;(NAN !== *//any value including NaN),NaN是一個全局對象的屬性。NaN屬性的數是指就是NaN,和Number.NaN的值同樣,判斷一個值是不是NaN,使用等號運算符(==和===)不能被用來判斷一個值是不是NaN.必須使用Number.isNaN或是isNaN()函數
b、若是兩個值相等,返回true;(x==x)
c、一個是+0,一個是-0 (+0===-0)