Skip to content

a == 1 && a == 2 && a == 3 可能为 true 吗?

Posted on:2021年12月26日 at 16:06

第一种方案

a 定义为一个对象,通过重写toString方法。根据规则,== 左边为对象类型,右边为Number,在比较时会调用 a 的toString方法,所以每次调用时都将返回值加1。

const a = {
  value: 1,
  toString: function () {
    return a.value++;
  },
};
console.log(a == 1 && a == 2 && a == 3); // true

第二种方案

用相同的方法重写valueOf方法。

原文转自:https://fe.ecool.fun/topic/9b617ec3-5346-4f82-9fcf-d502817b8c2d