toPrimitive方法对于不同类型的返回结果
1基本类型直接返回,基本类型的值
2对象, a如果对象的ValueOf方法的结果是原始值,返回原始值。
b如果对象的toString方法返回原始值,就返回这个值;
其他情况都返回一个错误
用例子来验证一下结果,首先我们知道下面的代码输出true(字符串长度大于1);
console.log('packet'?true:false)
那么这行代码结果呢?
console.log('packet' == true)
输出是false,为什么会这样呢?
1首先,布尔值会被toNumber方法转成数字,因此得到packet == 1
2其次,用toNumber转换字符串。因为字符串包含有字母,所以会转成NaN,
表达式就变成了NaN == 1,结果就是false.
那么这行代码的结果呢?
console.log('packet' == false)
输出也是false.步