let a = ?;
console.log(a == 1 &&a == 2 && a == 3)
题目:? 是多少才能输出true?
思路:这道题主要是考察的是等号运算符的规则和类型转换的规则,结合上面的类型转换的特点就可以把代码写成这样
// 我们先把a赋值成一个对象
// 讲一下为什么
// 因为如果类型不相同它就会去调用一个叫valueOf的方法
// 我们通过这个特点我们就可以写出来了
// 我们就可以给a这个对象重写一下valueOf的方法
var a = {
let b = 0;
valueOf:function(){
return this.b++;
}
}
讲一下为什么
因为我们重写了valueOf这个方法所以代码就会使用我们所重写的valueOf方法
这时候呢 我们给定一个变量的初始值是0
第一次比较的时候 它就会因为类型不同 他就会调用我们valueOf方法
这时候我们的b已经加一了 所以放回的就是1 这个时候就相等了
第二次比较的时候 它的类型也不同 也会调用我们的valueOf方法
这时候我们的b已经加一了 所以放回的就是2 也相等了 第三次同样的
所以这道题就解决了
前端小菜鸡一枚 写的不好有什么不对的地方还请大家多多指出