golovewkin
@golovewkin
WEB - Разработчик

Почему в javascript {} + [] возвращает 0, а [] + {} возвращает «[object Object]»?

как читать это?270c798d8762499a8fd56eeed53a6c99.png
Спасибо :)
  • Вопрос задан
  • 5777 просмотров
Решения вопроса 2
Ivanq
@Ivanq
Знаю php, js, html, css
В начале кода JS считает {} пустым блоком кода. Получается {} + [] == +[], а +[] равно 0. Когда сначала идет массив, к пустому массиву прибавляется {}, и получается [] + {} = "" + {} = ({}).toString(). Массив является разным объектом из-за этого:
[].toString() == "";
+[] == 0;
+[x] == x;
+[x,y,z] == NaN; // Ой, это неправильно!
+[x,y,z] != +[x,y,z] // NaN != NaN
Ответ написан
@Aves
{} + [] - пустой блок кода и приведение массива к числовому значению
[] + {} - приведение массива к строковому значению и добавление строкового значения пустого объекта

В таблице результат '==': зелёный, серый, синий true, остальное false, объекты сравниваются по ссылке.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы