一道无聊的js 判断题

发布于 2022-09-06 11:38:13 字数 161 浏览 14 评论 0

if(a == 1 && a == 2 && a == 3){

console.log('hello world')

}

有可能为真么?

答案是 true

求解释

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

人间不值得 2022-09-13 11:38:13
var a = {
  i : 0,
  toString : function() {
    return ++this.i;
  }
};
if (a == 1 && a == 2 && a == 3) {
  alert('前几天刚在群里看有人发。不得不说==坑多 (原文好像是知乎那里的 如果不是那就不知道了)');
}
谎言 2022-09-13 11:38:13

原理:

clipboard.png

clipboard.png

方案:
a 是对象,重写 a 的 toString() 或 valueOf 方法

一瞬间的火花 2022-09-13 11:38:13
var a = {
    value: 0,
    valueOf: function () {
        if (this.value === 3) {
            this.value = 1
        } else {
            this.value += 1
        }
        return this.value
    }
}
if (a == 1 && a == 2 && a == 3) {
    console.log('hello world')
}

重写了a的valueof方法 3次调用分别返回 1 2 3 ,这样if里的条件判断就能够成立了。

梦魇绽荼蘼 2022-09-13 11:38:13

掘金上看的吧

笑叹一世浮沉 2022-09-13 11:38:13

clipboard.png
这多一个空格 也是可以,少了就不行,这个不能理解

猥︴琐丶欲为 2022-09-13 11:38:13

这种题确实是没有多大实际意义啊

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文