Разгадка парадокса JavaScript: почему «0» является ложным при сравнении, но ложным в операторах if
В JavaScript поведение примитива " 0» представляет собой загадку для разработчиков. В то время как логические операторы, такие как «==", приравнивают «0» к ложному, «0» ведет себя как истинное в условиях «если».
Парадокс сравнения
Код ниже демонстрируется парадокс сравнения:
"0" == false // true
false == "0" // true
В этом сценарии JavaScript преобразует значение "0" в значение false на основе его значений "истина" и "ложь". Такие значения, как «0», «NaN», «null» и undefined, считаются ложными, а другие — правдивыми.
Если аномалия утверждения
Однако ситуация становится загадочным, когда в операторе if используется «0»:
if ("0") console.log("ha") // ha
Несмотря на принуждение значение false при сравнении, «0» оценивается как true в условиях «if». Это связано с тем, что операторы «if» в JavaScript рассматривают все непустые строки, включая «0», как правдивые.
Таблицы истинности
Чтобы понять это поведение, мы может ссылаться на таблицы достоверности JavaScript. Они классифицируют значения на основе их статуса истинности/ложности в условиях сравнения (==) и утверждения «если» (правдивость):
Значение | Сравнение | Если утверждение |
---|---|---|
Правда/Правда | Правда | Правда |
Ложь/Ложь | ложь | ложь |
"0" (Ложь) | ложь | true |
Вывод
Парадокс «0» в JavaScript возникает из-за различных интерпретаций истинности в сравнении (= =) и утверждения «если» (истина). Это тонкое, но важное различие, о котором следует помнить разработчикам, чтобы избежать неожиданных результатов. Рекомендуется использовать строгое равенство (===) во время сравнений, чтобы обеспечить точные оценки.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3