«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему «0» принимает значение «истина» в операторе if, но значение «ложь» при сравнении?

Почему «0» принимает значение «истина» в операторе if, но значение «ложь» при сравнении?

Опубликовано 7 ноября 2024 г.
Просматривать:938

Why Does

Понимание особенностей JavaScript: почему «0» является ложным, но не ложным в операторах if

В JavaScript — оценка значения в логическом контексте, например в Операторы if или логические сравнения могут привести к неожиданным результатам. Такое поведение связано с механизмом приведения типов JavaScript.

JavaScript свободно типизирует свои значения, и когда строковое или числовое значение используется в логическом контексте, оно подвергается принуждению типа для преобразования его в логическое значение. В этом преобразовании непустые строки и ненулевые числа оцениваются как true, а пустые строки и нулевые числа оцениваются как false.

Поэтому, когда вы сравниваете «0» с ложью, используя == или === , он возвращает true, поскольку приведение типа преобразует как «0» (непустая строка), так и false (значение, подобное нулю) в true.

Однако при использовании оператора if оценивается только «0». к истине. Это связано с тем, что операторы if внутри используют принудительное логическое значение, которое возвращает true для непустых строк.

Во избежание двусмысленности рекомендуется использовать оператор строгого равенства === при сравнении примитивных значений, как он выполняет сравнение без приведения типов. Это гарантирует, что «0» при необходимости будет правильно оценено как ложное.

Обратитесь к прилагаемым таблицам для краткого представления истинного/ложного поведения JavaScript для различных типов данных. Помните: для истинного сравнения на равенство всегда выбирайте ===.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3