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#
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.