题目: ?处如何填写,可输出1
let a = ?
if(a==1&&a==2&&a==3){
console.log(1)
}
答案:
var a = {
i:0,
toString:function(){
this.i++;
return this.i
}
};
if(a==1&&a==2&&a==3){
console.log(1)
}
详细理由:
- == 在比较时会默认进行数据类型转换,必然调用toString()方法,因此可通过重写a的toString方法来改变a的返回值(a为对象,对象原型默认有toString()方法,因此叫重写,不重写则会调用默认的toString()方法)
- 读取a的值(即return的值),第一次是1,第二次是2,第三次是3