【问题标题】:function returns [object Object] javascript [closed]函数返回[object Object] javascript [关闭]
【发布时间】:2018-05-18 08:33:53
【问题描述】:

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

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]

谁能给我解释一下?

【问题讨论】:

  • 因为sous是一个对象
  • 您正在连接字符串和对象。使用, 控制2 个变量,例如console.log(k, t[k]);

标签: javascript arrays hash hashtable


【解决方案1】:

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]) ;
}

【讨论】:

  • 谢谢!!!如果我使用逗号(,),垃圾邮件的输出是什么,?
  • @Jamin 在上面的代码 sn-p 中
【解决方案2】:

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

更多信息在这里:

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

【讨论】:

    猜你喜欢
    • 2013-09-13
    • 2015-05-09
    • 2022-11-14
    • 1970-01-01
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多