类型不同的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》