總結自文章:https://juejin.im/post/5d43bcb36fb9a06b2f5f920f
如果 == 兩側是不同類型的值,則會引發隱式類型轉換。那麼轉換的規則是什麼?
記住下面幾條轉換規則,媽媽再也不擔心我懵逼
規則一:若字符串和數字進行比較,那麼字符串轉數字。
'0' == 0 // true '0'=> 0
規則二:若複雜數據類型和簡單數據類型比較,那麼複雜數據類型需要先轉成簡單數據類型,再進行比較。
——首先嚐試調用valueOf方法轉成簡單類型,若不能,轉而調用toString方法轉成字符串(簡單類型),再用規則一比較。
[] == 0 // true, [] => '' => 0
[] == '0' // false, [] => ''
規則三:x 是 undefined || null 且 y 是undefined || null,直接返回true。另外有NaN直接返回false