1.undefined 和null比较
undefined == null //true
undefined===null //false
== 返回true 是因为 规范中提到, 要比较相等性之前,不能将 null 和 undefined 转换成其他任何值,并且规定null 和 undefined 是相等的。
=== 首先判断类型 undefined和null类型不同 直接返回false
2.Number([])
Number([]) //0
Number([12]) //12
Number([1,2])//NaN
Number({}) //NaN
对象到数字的转换
如果对象有valueOf()方法并且返回原始值,javascript将返回值转换为数字作为结果
如果对象有toString()方法并且返回原始值,javascript将返回结果转换为数字作为结果(
{}.toString() //[Object Object]
[].toString() // ‘’
)
否则JavaScript抛出一个类型错误异常(throws a TypeError)
数组继承了默认的valueOf()方法,这个方法返回一个对象而不是一个原始值,因此,数组到数字的转换则调用toString()方法。
空数组转换成为空字符串,所以空字符串转换成为数字0。
含有一个元素的数组转换为字符串的结果和这个元素转换字符串的结果一样。
如果数组只包含一个数字元素,这个数字转换为字符串,再转换回数字