js 真是门强 ke 大 pa 的语言。
const a = { i: 1, toString: function () { return a.i++; } } if(a == 1 && a == 2 && a == 3) { console.log('Hello World!'); } toString 可以修改为 valueOf,如果两个都写,只会调用 valueOf。
var a = 1; var a = 2; var a = 3; if(a ==1 && a== 2 && a==3) { console.log("Why hello there!") } 这个感觉就莫名其妙的了。。。
a = [1,2,3]; a.join = a.shift; console.log(a == 1 && a == 2 && a == 3); 这个其实原理和第一个一样,比较前先进行转换。
let a = {[Symbol.toPrimitive]: ((i) => () => ++i) (0)}; console.log(a == 1 && a == 2 && a == 3); emmm... symbol 还没学。
这个问题真的是太可怕了,问出来估计真的没多少人能答得出来。
传送门: https://stackoverflow.com/questions/48270127/can-a-1-a-2-a-3-ever-evaluate-to-true#
