我使用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。
你能帮我理解为什么我们看到这种差异。
答案 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
更为可取。