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

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

как читать это?270c798d8762499a8fd56eeed53a6c99.png
Спасибо :)
  • Вопрос задан
  • 5807 просмотров
Решения вопроса 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, объекты сравниваются по ссылке.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
SummerWeb Ярославль
от 120 000 до 180 000 ₽
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
Brightdata Тель-Авив
от 5 500 до 6 500 $
13 июн. 2024, в 13:25
10000 руб./за проект
13 июн. 2024, в 13:15
5000 руб./за проект
13 июн. 2024, в 13:03
15000 руб./за проект