js中的「==」和「===」的原理及區別

兩種方法說明問題:函數

一、全等號===只考慮類型相同的值的比較,不一樣類型使用===進行比較,返回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)

相關文章
相關標籤/搜索