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