Квантовая двойственность: переменная равна нулю и не определена одновременно? - PullRequest
5 голосов
/ 19 ноября 2010

Рассмотрите следующий код JavaScript (протестированный в Firefox):

function f(a) {

  if (a == undefined) {
    alert('undefined');
  }

  if (a == null) {
    alert('null');
  }
}

f();

Отображаются оба предупреждения, свидетельствующие о том, что оба утверждения верны.

Не могли бы вы дать разумное объяснение?

1 Ответ

10 голосов
/ 19 ноября 2010

== является «мягким» оператором равенства.
Он использует приведение типов для сравнения двух эквивалентных объектов как равных.

Все из следующих условий являются истинными:

42 == "42"
0 == false
0 == ""
[] == ""
{} == "[object Object]"
'/(?:)/' == new RegExp

Вместо этого вы должны использовать оператор ===, который проверяет строгое равенство.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...