У меня есть эта часть моего кода:
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]
Кто-нибудь может мне объяснить?
Вы объединяете строку и объект. Используйте , для консоли 2 переменных, таких как console.info(k, t[k]);



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Используйте запятую (,) в 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 это во фрагменте кода выше
Когда вы пишете выражение k + ’ : ’ + t[k], оператор + будет работать как оператор конкатенации. Это заставит операнд с правой стороны преобразоваться в строку. Для объектов это означает вызов их метода .toString(), который по умолчанию просто возвращает [object Object].
Больше информации здесь:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString
потому что
sous- это объект