函数返回[object Object] javascript

时间:2018-05-18 08:33:53

标签: javascript arrays hash hashtable

我有我的代码的这个子部分:

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

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

我真的不明白为什么“垃圾邮件”键的结果是[object Object]。

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

任何人都可以向我解释一下吗?

2 个答案:

答案 0 :(得分:2)

console.log中使用逗号(,)而不是连接运算符+

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

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

答案 1 :(得分:1)

当您编写表达式k + ’ : ’ + t[k]时,+运算符将用作连接运算符。它将强制右侧的操作数转换为字符串。对于对象,这意味着调用他们的.toString()方法,默认情况下只返回[object Object]

更多信息:

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