Книга: JavaScript. Подробное руководство, 6-е издание
3.8.1. Преобразования и равенство
3.8.1. Преобразования и равенство
Благодаря гибкости преобразований типов в JavaScript оператор равенства == также гибко определяет равенство значений. Например, все следующие сравнения возвращают true:
null == undefined // Эти два значения считаются равными.
"0" == 0 // Перед сравнением строка преобразуется в число.
0 == false // Перед сравнением логич. значение преобразуется в число.
"0" == false // Перед сравнением оба операнда преобразуются в числа.
В разделе 4.9.1 четко описывается, какие преобразования выполняет оператор ==
, чтобы определить, являются ли два значения равными, и в этом же разделе описывается оператор идентичности ===
, который не выполняет никаких преобразований перед сравнением.
Имейте в виду, что возможность преобразования одного значения в другое не означает равенства этих двух значений. Если, например, в логическом контексте используется значение undefined
, оно будет преобразовано в значение false
. Но это не означает, что undefined == false
. Операторы и инструкции JavaScript ожидают получить значения определенных типов и выполняют преобразования в эти типы. Инструкцияif
преобразует значение undefined
в false
, но оператор ==
никогда не пытается преобразовать свои операнды в логические значения.
- 6.8. Равенство
- 2.7 Преобразования типов
- Модификаторы спецификации преобразования, используемые в функции printf( )
- 2.16. Явные и неявные преобразования
- А6.5. Арифметические преобразования
- Преобразования типов при присваивании
- Преобразования снаружи
- Конфигурация зоны для обратного преобразования
- Опции iptables для осуществления NAT-преобразования
- Пример: явное связывание функци и преобразования файлов
- A6.2. Целочисленные преобразования
- Объединение документа и преобразования