Почему пустой массив равен false?

Я читал раздел «Типы и грамматика» книги You Don’t Know JS, и мне было трудно это понять.

Почему пустой массив равен false?

console.log(false == []); // true


person Lieutenant    schedule 27.06.2020    source источник
comment
stackoverflow.com/questions/19146176/   -  person beskgar    schedule 27.06.2020
comment
Отвечает ли это на ваш вопрос? Пустые массивы кажутся равными true и false в то же время  —  второй результат для «пустой массив js равен false» в Google (другая ссылка — первый результат).   -  person Sebastian Simon    schedule 27.06.2020
comment
@pramodsingh Что? Это не имеет никакого отношения к этому вопросу.   -  person Sebastian Simon    schedule 27.06.2020
comment
Но он возвращает true для меня!   -  person Menai Ala Eddine - Aladdin    schedule 27.06.2020
comment
developer.mozilla.org/en-US/docs/Web/JavaScript/   -  person Ziaullhaq Savanur    schedule 27.06.2020


Ответы (1)


Когда вы делаете [] == false, за кулисами вызывается метод Array.prototype.toString с этим пустым массивом в качестве контекста this, который возвращает пустую строку "", а пустая строка является ложным значением в JavaScript.

person Marik Ishtar    schedule 27.06.2020
comment
@hev1 В спецификации это называется "пустой строкой" потому что она только одна. - person Sebastian Simon; 27.06.2020
comment
@ user4642212 Спасибо, что сообщили мне. - person Unmitigated; 27.06.2020