這里說的隱性類型轉換,是==引起的轉換。
- 如果存在NaN,一律返回false
- 再看有沒有布爾,有布爾就將布爾轉換為數字
- 接着看有沒有字符串, 有三種情況,對方是對象,對象使用toString進行轉換;對方是數字,字符串轉數字;對方是字符串,直接比較;其他返回false
- 如果是數字,對方是對象,對象取valueOf進行比較, 其他一律返回false
- null, undefined不會進行類型轉換, 但它們倆相等
這個順序一定要死記,這是面試時經常問到的。
下面是一些雜題,自己做做
0 == undefined 1 == true 2 == {valueOf: function(){return 2}} NaN == NaN 8 == undefined 1 == undefined null == {toString: function(){return 2}} 0 == null null == 1 { toString:function(){ return 1 } , valueOf:function(){ return [] }} == 1