专栏名称: 极小光
极小光,极光开发者旗下媒体,每天导读国外技术类文章,价值、思考、共鸣。 官网: http://y0.cn/jiguangOfficial 欢迎关注专题:极光。 你来投稿,投稿,投稿; 我来传播,传播,传播。 我已委托“维权骑士”(rightknights.com)为我的文章进行维权行动
目录
相关文章推荐
51好读  ›  专栏  ›  极小光

JavaScript (a == 1 && a == 2 && a == 3) 可能为 true 吗...

极小光  · 简书  ·  · 2018-01-22 13:24

正文

请到「今天看啥」查看全文


大家可以先自己想一想。

...

...

...

这里给一个最高赞的答案:

自定义 toString (或者 valueOf )方法,每次调用改变一次返回值,从而满足判断条件。

const a = {
  i: 1,
  toString: function () {
    return a.i++;
  }
}

if(a == 1 && a == 2 && a == 3) {
  console.log('Hello World!');
}

当使用 == 时,如果两个参数的类型不一样,那么 JS 会尝试将其中一个的类型转换为和另一个相同。在这里左边对象,右边数字的情况下,会首先尝试调用 valueOf(如果可以调用的话)来将对象转换为数字,如果失败,再调用 toString。







请到「今天看啥」查看全文