JavaScript операторы. Что использовать: === или ==?

Оператор идентичности (===) ведет себя идентично оператору равенства (==), если только типы значений, которые приравниваются — одинаковые.

Оператор (==) будет проверять на равенство только тогда, когда совершены все необходимые преобразования к одному типу значений. Оператор (===) не станет преобразовать значения. Он просто вернет false. Это тот случай, когда оператор идентичности (===) будет быстрее и может вывести другой результат, чем оператор равенства (==). Во всех других случаях поведение будет одинаковым.

Цитата Дагласа Крокфорда (Douglas Crockford) из его JavaScript: The Good Parts.

JavaScript имеет два набора операторов равнства: === и !==, а также их злые близнецы: == и !=. Хорошие операторы раборают именно так, как вы ожидаете. Если сравниваемые значения одного типа, тогда === возвращает true и !== возвращает false. Злые близнецы работают правильно только тогда, когда значения одного типа. Но если они разных типов, это приводит к осложнениям, которые тяжело предугадать и запомнить. Вот несколько примеров:

'' == '0'           // false
0 == ''             // true
0 == '0'            // true
false == 'false'    // false
false == '0'        // true
false == undefined  // false
false == null       // false
null == undefined   // true
' \t\r\n ' == 0     // true

Явно видна тревожная непоследовательность. Все сравнения с использованием === возвращают false.

Связанные статьи

© Прямое копирование материалов запрещено