Если мы alert(null==undefined)
, он выводится на true
.Почему null == undefined является истинным в javascript
Какова логическая причина этого.
Это что-то, что жестко закодировано в javascript или есть объяснение этому.
Если мы alert(null==undefined)
, он выводится на true
.Почему null == undefined является истинным в javascript
Какова логическая причина этого.
Это что-то, что жестко закодировано в javascript или есть объяснение этому.
Спецификация языка explicitly says:
Если х равно нулю, и у не определено, возвращает истину
Я не в курсе каких-либо записей в процессе разработки языка, объясняющие рассуждения для это решение, но у ==
есть правила для обработки разных типов, а «null» и «undefined» - это то, что означает «ничего», поэтому с их равностью делает интуитивный смысл.
(Если вы не хотите путаницы, используйте вместо этого ===
).
, поэтому вы хотите сказать, что это жестко запрограммированный huh ??? – Nav
Err, да. Это часть основного языка. – Quentin
скажите мне одну вещь ... когда мы используем ==, типы становятся равными, а затем проверены на равенство правильно? тип undefined не определен, а тип null - это объект, тогда объект == undefined ??? – Nav
По той же причине, что 0 == "0"
- Javascript свободно напечатал - если что-то может быть преобразовано к чему-то другому, то это будет, если вы не используете ===
alert(null===undefined);
Даст вам ложь.
Что касается того, почему происходят эти конкретные преобразования - ответ довольно просто, «спецификация говорит, что это должно произойти». Там не обязательно должна быть причина, отличная от «потому что она говорит так», почему язык программирования ведет себя определенным образом.
Использование двухуровневого оператора заставляет Javascript делать принуждение типа.
Другими словами, когда вы делаете x == y
, если x
и y
не одного и того же типа, JavaScript будет отбрасывать одно значение на другое, прежде чем сравнивать, например, если строка и число сравниваются, строка всегда отливают в ряд а затем сравнивается
По этой причине многие сравнения смешанных типов в JavaScript могут приводить к неожиданным или контр-интуитивным результатам.
Если вы хотите делать сравнения в JavaScript, обычно лучше использовать оператор тройного равенства ===
, а не двойной. Это не приводит к принуждению типа; вместо этого, если типы разные, он возвращает false. Это чаще всего то, что вам нужно.
Вы должны использовать только двузначный, если вы абсолютно уверены, что вам это нужно.
Это должен быть лучший ответ. Отличное объяснение! –
Оператор сравнения ==
не проверяет типы. null
и undefined
обе возвращается false
. Вот почему ваш код действительно проверяет, равен ли false
false
.
> null == undefined;
< true
> false == false
< true
Однако их типы не равны.
> typeof undefined;
< "undefined"
> typeof null;
< "object"
Из-за этого, следующий оператор вернет ложь, как ===
оператор сравнения проверок обоих типов и их стоимости.
> undefined === null;
< false
Почему проголосовали? Пожалуйста, объясните .. – Broxzier
Ответ: 'он просто делает логические числа, цифры или строки данных, которые необходимо проверить ', неверно, как объясняет ответ Квентина. 'null 'и' undefined' не преобразуются в другой тип, у них есть собственные правила. –
@AshBurlaczenko Обновлен мой ответ. – Broxzier
да ... Вы можете указать мне на какой-то материал, где он говорит, что причина в том, и не только, что она равна: P – Nav
Я бы сказал, потому что не определено значит ничего aswel, если ваш DIV не иметь идентификатор, он не определен или мы можем сказать, что он не существует, null, void. –
вы можете объяснить, как работает оператор ==, когда дело доходит до сравнения неопределенного и нулевого – Nav