if(a==1&&a==2&&a==3){
return true
}
// a的值:
a={
value:0,
valueOf:function(){
return this.value++
}
}
== 做比较的时候 对象会发生隐式转换,对象隐式转换的顺序如下:
1、如果存在 Symbol.toPrimitive() 方法 优先调用 然后返回
Symbol.toPrimitive被调用时,会接受一个字符串参数,表示当前运算的模式,一个有三种模式。
- Number:该场合需要转成数值
- String:该场合需要转成字符串
- Default:该场合可以转成数值,也可以转成字符串。
``javascript // 没有 Symbol.toPrimitive 属性的对象 var obj1 = {}; console.log(+obj1); //NaN console.log(
${obj1}`); //“[object Object]” console.log(obj1 + “”); //“[object Object]”
// 拥有 Symbol.toPrimitive 属性的对象 var obj2 = { Symbol.toPrimitive { if(hint == “number”){ return 10; } if(hint == “string”){ return “hello”; } return true; } }
console.log(+obj2); //10 —hint in “number”
console.log(${obj2}
); //hello —hint is “string”
console.log(obj2 + “”); //“true” —hint is default
```