由于JS的弱类型特性,在进行JS的==, 排序运算符, 加减乘除,在对非原始值进行操作时,都会调用内部的toPrimitive()方法。
// 例外
{} + [] // 0 {}会被认为代码块 故只剩下 +[], +0 0
// 当进行复杂类型转换时,会会调用toPrimitive()的内部函数
toPrimitive(input,preferedType?)
preferedType是期望转换的类型
1. 如果input是原始值,直接返回这个值;
2. 否则,如果input是对象,调用input.valueOf(),如果结果是原始值,返回结果;
3. 否则,调用input.toString()。如果结果是原始值,返回结果;
4. 否则,抛出错误。
如果转换的类型是String,2和3会交换执行,即先执行toString()方法。
[] + [] // ""
[] + {} // "[object Object]"
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。