要使 javascript( a == 1 && a == 2 && a == 3) 为 true, 有可能吗? 既然抛出来了, 那一定是有解的.

var obj = {
  index: 1,
  get a() {
    return obj.index++;
  }
}

console.log('getter 第一次:', obj.a == 1 && obj.a == 2 && obj.a == 3)
console.log('getter 第二次:', obj.a == 1 && obj.a == 2 && obj.a == 3)

class A {
  constructor() {
    this.index = 1;
  }
  toString() {
    return this.index++;
  }
}
var a = new A();
console.log('class 第一次:', a == 1 && a == 2 && a == 3)
console.log('class 第二次:', a == 1 && a == 2 && a == 3)

还有队友的 hack

a = [1,2,3];
a.join = a.shift;
console.log(a == 1 && a == 2 && a == 3);  // 数据进行字符串比较的时候, 会自动调用 join 函数, 将 join 函数重写即可.

还有一种障眼法, 搞3个不同的 a, 编码不一样, 但是看上去一样也行哈