類型不同的2個變量做加法(+
)運算時,會發生自動類型轉換:
- 如果2個變量是
number
,boolean
,null
,undefined
中不同的2種類型,那麼計算結果爲number
,其中null
被當做0,undefined
被當做NaN - 如果2個變量至少有1個是
string
或object
類型,那麼計算結果爲string,其中null
被當做’null’,undefined
被當做’undefined’
類型不同的2個變量做非嚴格相等(==
)運算時,會發生自動類型轉換:
- null == undefined
- NaN不等於任何值,包括它自身
- 如果2個變量是
number
, ‘boolean’,string
中不同的2種類型,那麼它們都將被轉換爲number
- 如果2個變量中有且僅有1個是
object
類型,那麼會優先調用這個object
類型變量的valueOf()
方法(如果存在的話),否則調用它的toString()
方法。注意,如果這個object
類型的變量是Date
類型,那麼只會調用toString()
方法 - 如果2個變量都是
object
類型,那麼比較它們的內存地址
參考
《Effective Javascript》