Да, это может быть правдой, и есть 6 способов — потрясающе!

Недавно мне задали очень интересный вопрос на собеседовании: Может ли (a== 1 && a==2 && a==3) когда-либо быть оценено как true в JavaScript?. Я чуть не потерял возможность трудоустройства, потому что не мог ответить.

В тот момент я был шокирован вопросом и подумал, что интервьюер шутит.

Но когда я увидел его «улыбку», у меня в голове пронеслось чувство «ты не должен знать ответа». Эту проблему определенно было нелегко решить.

В статье будет дано 6 профессиональных ответов. Начнем прямо сейчас.

Решение 1: значениеOf && toString

Первое решение очень простое, и я уверен, что после прочтения этого кода у вас появится идея.

Поразительно, что происходит? Не волнуйся, друг мой, я попытаюсь объяснить почему.

Объяснение части неявных правил преобразования

Когда == используется для сравнения двух значений в JavaScript, выполняются следующие операции:

  1. Преобразуйте два сравниваемых значения в один и тот же тип.
  2. После преобразования (можно преобразовать одну или обе части уравнения) сравните значения.

Правила сравнения показаны в следующей таблице: