Неявные преобразования JavaScript при равенстве со строкой

StackOverflow https://stackoverflow.com/questions/1282286

Вопрос

Как ведет себя JavaScript при сравнении true == "true" и (0 == "0")?

Это было полезно?

Решение

Операторы, поддерживающие приведение типов (== и !=), могут давать некоторые странные результаты:

'' == '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

Операторы строгого равенства === и !== всегда предпочтительный.

Другие советы

При использовании == или !=, если типы двух выражений различны, они попытаются преобразовать их в строку, число или логическое значение и т. д.

Однако вы можете использовать сравнение идентификаторов === или !==, где преобразование типов не выполняется и типы должны быть одинаковыми, чтобы считаться равными.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top