== 與 === 的本質(zhì)區(qū)別:是否允許隱式強制類型轉(zhuǎn)換。
第一步 null 和 undefined的寬松相等
null和undefined之間的寬松相等的,它們與 其它任何值都不寬松相等。
第二步 布爾值與其它類型的寬松相等比較
其它類型和 布爾之間寬松相等比較時,將 布爾類型轉(zhuǎn)化為 數(shù)字后在進行比較。
第三步 字符串、數(shù)字的寬松相等
字符串和 數(shù)字之間寬松相等比較時,統(tǒng)一轉(zhuǎn)化為 數(shù)字后比較。
第四步 對象與非對象之間的寬松相等
先將對象進行 toPrimitive(obj)處理得到一個 基本數(shù)據(jù)類型,再進行寬松相等比較。
toPrimitive操作:先調(diào)用對象的valueOf(),如果沒有則調(diào)用對象的toString()。