Неявные преобразования JavaScript при равенстве со строкой
-
16-09-2019 - |
Вопрос
Как ведет себя 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
Операторы строгого равенства === и !== всегда предпочтительный.
Другие советы
При использовании == или !=, если типы двух выражений различны, они попытаются преобразовать их в строку, число или логическое значение и т. д.
Однако вы можете использовать сравнение идентификаторов === или !==, где преобразование типов не выполняется и типы должны быть одинаковыми, чтобы считаться равными.
Не связан с StackOverflow