В JavaScript — оценка значения в логическом контексте, например в Операторы if или логические сравнения могут привести к неожиданным результатам. Такое поведение связано с механизмом приведения типов JavaScript.
JavaScript свободно типизирует свои значения, и когда строковое или числовое значение используется в логическом контексте, оно подвергается принуждению типа для преобразования его в логическое значение. В этом преобразовании непустые строки и ненулевые числа оцениваются как true, а пустые строки и нулевые числа оцениваются как false.
Поэтому, когда вы сравниваете «0» с ложью, используя == или === , он возвращает true, поскольку приведение типа преобразует как «0» (непустая строка), так и false (значение, подобное нулю) в true.
Однако при использовании оператора if оценивается только «0». к истине. Это связано с тем, что операторы if внутри используют принудительное логическое значение, которое возвращает true для непустых строк.
Во избежание двусмысленности рекомендуется использовать оператор строгого равенства === при сравнении примитивных значений, как он выполняет сравнение без приведения типов. Это гарантирует, что «0» при необходимости будет правильно оценено как ложное.
Обратитесь к прилагаемым таблицам для краткого представления истинного/ложного поведения JavaScript для различных типов данных. Помните: для истинного сравнения на равенство всегда выбирайте ===.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3