Как (a==1 && a==2 && a==3) == true?

Статья будет переводом вопроса с StackOverflow (так-же есть версия и на Answer-ID).
Может ли (a == 1 && a == 2 && a == 3) равняться true в языке программирования JavaScript?

Это вопрос получен при попытке устроиться на работу. Это было 2 недели назад, и я пробовал найти ответ. Знаю что при работе не будет встречаться такой код, но задаю вопрос ради интереса.

Топ ответов:

Лучший ответ.

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

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

Другие варианты которые тоже работают:

var a_ = 1;
var a = 2;
var _a = 3;
if(a_==1 && a== 2 &&_a==3) {
    console.log("Why hello there!")
}
var i = 0;

with({
  get a() {
    return ++i;
  }
}) {
  if (a == 1 && a == 2 && a == 3)
    console.log("wohoo");
}
a = [1,2,3];
a.join = a.shift;
console.log(a == 1 && a == 2 && a == 3);
with({
  get a() {
    return Math.floor(Math.random()*4);
  }
}){
  for(var i=0;i<1000;i++){
    if (a == 1 && a == 2 && a == 3){
      console.log("after "+(i+1)+" trials, it becomes true finally!!!");
      break;
    }
  }
}
var val = 0;
Object.defineProperty(window, 'a', {
  get: function() {
    return ++val;
  }
});
if (a == 1 && a == 2 && a == 3) {
  console.log('yay');
}
var a = {
  r: /\d/g, 
  valueOf: function(){
    return this.r.exec(123)[0]
  }
}

if (a == 1 && a == 2 && a == 3) {
    console.log("!")
}
Valeriu :