使下面输出1
解答思路
我们想要a取一个东东,来让下面的条件成立,我们必须要明白数据的隐式转换。
- 对象 == ’123‘, 先调用对象的toString()转化成字符串,然后再看需要等于的类型是否转化成数值。
- undefined == null 为真
- NAN == NAN 是恒为假的
知道了上面的隐式转化过程,我们可以利用数据的劫持,或者重写隐式转化种调用的函数来达到,我们读取一个变量的值,获取不同结果的目的。
方法一:generator生成器
var a={
toString = function*(){
yield 1;
yield 2;
yield 3;
}
}
方法二: a.toString
会转换,规则:
对象字符串 对象.toString
nullundefined 相等 但是和其他值不相等
NaN!=NaN
剩下的都转换成数字