在JavaScript里 (a ==1 && a== 2 && a==3) 有可能是 true 吗?
ps:今天看到这个有趣的问题,跟大家分享下
一个有趣的问题:
在 JavaScript 中, (a ==1 && a== 2 && a==3) 是否有可能为 true ?
这个问题是一个小伙伴在面试时被问到,我想了很久。测试了下,然后偷偷去看了个答案,原来还不止一种方式为 true。
大家是否觉得有趣呢?有趣就往下看咯。
解法一:
利用松散相等运算符 == 的工作原理,你可以简单地创建一个带有自定义toString( 或者 valueOf)函数的对象,在每一次使用它时候改变它所的返回值,使其满足所有三个条件。
const a = { i: 1, toString: function () { return a.i++; } } if(a == 1 && a == 2 && a == 3) { console.log('Hello World!'); }
解法二:
用下划线方式进行定义变量a,这也是我能想到的一种方式。解法一时通过看小伙伴答案找到的。
var a_ = 1; var a = 2; var _a = 3; if(a_==1 && a== 2 &&_a==3) { console.log("Why hello there!") }