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

Почему пустые массивы в JavaScript оцениваются как истина, так и ложь?

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

Why Do Empty Arrays Evaluate to Both Truthy and False in JavaScript?

Путаница по поводу истинности и равенства пустых массивов с ложью

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

Давайте подробнее рассмотрим предоставленный пример кода:

var arr = [];
console.log('Array:', arr);
if (arr) console.log("It's true!");
if (arr == false) console.log("It's false!");
if (arr && arr == false) console.log("...what??");

Первый оператор if проверяет, присутствует ли arr (поскольку это объект). Поскольку arr является объектом Array, он присутствует, и условие оценивается как true.

Однако второй оператор if сравнивает значение arr (после вызова toString()) с примитивным значением false. В JavaScript [] преобразуется в пустую строку ("") при вызове с помощью toString(), что считается ложным значением (наряду с нулевым, неопределенным, 0 и т. д.). Следовательно, условие также оценивается как ложное.

Третий оператор if объединяет два предыдущих условия с помощью оператора AND (&&). Поскольку и arr (теперь пустая строка), и arr == false (true и false) оцениваются как false, все условие оценивается как false.

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

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

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

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

Copyright© 2022 湘ICP备2022001581号-3