3.8.1. Преобразования и равенство

We use cookies. Read the Privacy and Cookie Policy

Благодаря гибкости преобразований типов в JavaScript оператор равенства == также гибко определяет равенство значений. Например, все следующие сравнения возвращают true:

null == undefined // Эти два значения считаются равными.

"0" == 0          // Перед сравнением строка преобразуется в число.

0 == false        // Перед сравнением логич. значение преобразуется в число.

"0" == false      // Перед сравнением оба операнда преобразуются в числа.

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

Имейте в виду, что возможность преобразования одного значения в другое не означает равенства этих двух значений. Если, например, в логическом контексте используется значение undefined, оно будет преобразовано в значение false. Но это не означает, что undefined == false. Операторы и инструкции JavaScript ожидают получить значения определенных типов и выполняют преобразования в эти типы. Инструкцияif преобразует значение undefined в false, но оператор == никогда не пытается преобразовать свои операнды в логические значения.