我使用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);
}())Run Code Online (Sandbox Code Playgroud)
当我使用','和console.log时,我看到输出为
Logging with , [Object, Object, Object, Object]
Run Code Online (Sandbox Code Playgroud)
并且每个这个对象都是可扩展的.但是用'+'我看到输出为
Logging with + [object Object],[object Object],[object Object],[object Object]
Run Code Online (Sandbox Code Playgroud)
为了演示,我创建了这个jsfiddle.
你能帮我理解为什么我们看到这种差异.
小智 7
通过Tushar的回答中的例子,可能更清晰(或冗长)地添加一些内容:
关于连接(不包括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: 'a'}
因此,逗号将对象作为使用该对象的参数传递toString(),这是最好的console.log().