我有我的代码的这个子部分:
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]
任何人都可以向我解释一下吗?
答案 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