這里說的隱性類型轉換,是==引起的轉換。
- 如果存在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
