Функция возвращает [объект Object] javascript

У меня есть эта часть моего кода:

var t = {
   "a" : "coucou",
   "b" : "salut",
   "c" : [1, 2, 3],
   "sous" : {
    "foo" : "bar",
    "spam" : [ 1,2, {"egg" : "42"}]}
   };

   for ( k in t) {
    console.info(k + ’ : ’ + t[k]) ;
   }

Я действительно не понимаю, почему результатом ключа «спам» является [объект Object].

a : coucou
b : salut
c : 1,2,3
sous : [object Object]

Кто-нибудь может мне объяснить?

потому что sous - это объект

Muhammad Usman 18.05.2018 10:34

Вы объединяете строку и объект. Используйте , для консоли 2 переменных, таких как console.info(k, t[k]);

Eddie 18.05.2018 10:35
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
79
2

Ответы 2

Используйте запятую (,) в console.info вместо оператора конкатенации +:

var t = {
   "a" : "coucou",
   "b" : "salut",
   "c" : [1, 2, 3],
   "sous" : {
    "foo" : "bar",
    "spam" : [ 1,2, {"egg" : "42"}]}
   };

for ( k in t) {
 console.info(k + ' : ' , t[k]) ;
}

Спасибо!!! Если я использую запятую (,), какой будет вывод спама?

Jamin 18.05.2018 10:45

@Jamin это во фрагменте кода выше

Ankit Agarwal 18.05.2018 11:19

Когда вы пишете выражение k + ’ : ’ + t[k], оператор + будет работать как оператор конкатенации. Это заставит операнд с правой стороны преобразоваться в строку. Для объектов это означает вызов их метода .toString(), который по умолчанию просто возвращает [object Object].

Больше информации здесь:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString

Другие вопросы по теме