为什么逗号' ,'加上' +'以不同的模式记录控制台输出?

时间:2015-10-26 06:28:20

标签: javascript

我使用console.log语句进行调试,但遇到了使用','或' +'使用console.log语句以不同的模式记录输出。例如



(function() {
  var x = [];
  x.push({
    a: 1,
    b: 2,
  }, {
    a: 4,
    b: 3,
  }, {
    a: 5,
    b: 6
  }, {
    a: 7,
    b: 8,
  })
  console.log('Logging with , ', x);
  console.log('Logging with + ' + x);
}())




当我使用'时,'使用console.log我看到输出为

Logging with ,  [Object, Object, Object, Object]

并且每个对象都是可扩展的。但是' +'我看到输出为

Logging with + [object Object],[object Object],[object Object],[object Object]

为了演示,我创建了这个jsfiddle

你能帮我理解为什么我们看到这种差异。

2 个答案:

答案 0 :(得分:29)

带对象的

toString字符串连接运算符)将调用对象上的'' + object方法,并返回字符串。 因此,object.toString()相当于toString。对象上的"[object Object]"返回,

使用63 int main(){ 64 int a, b, num, y; 65 cin >> num; 66 switch (num){ 67 68 case 1: soi_cout(); 69 cin >> num; 70 if(num == 1){ 71 ab_cout(); 72 cin >> a; 73 cin >> b; y = 0; //or any number you want to initialize 74 for(int i=a; i<=b; i++){ 75 y += y1(i);//you can't just declare this 'y' because you used it in there 76 return 0; 77 } 78 79 return 0; 80 } 81 return 0; 82 } 83 84 85 return 0; 86 } ,对象作为单独的参数传递给log方法。

答案 1 :(得分:6)

使用Tushar's响应的示例添加可能更清晰(或更详细)的内容:

关于连接(不包括console.log()个东西)使用+运算符。 你在console.log()中使用逗号的原因是因为函数所采用的参数是可变数量的参数。

因此,如果您执行console.log('a' + 'b'),则会获得ab

但是,如果你console.log('a' , 'b') a b,则console.log('a' + {a : 'a'})

现在,如果你做a[object Object],你就得到了 console.log('a' , {a : 'a'})这不是很有用,

如果你{a: 'a'} toString(),则获得console.log()

因此,逗号将对象作为参数传递,该参数使用该对象的width,这对于table-wrap更为可取。