括号之间的javascript一元加号

括号之间的javascript一元加号,javascript,arrays,object,Javascript,Arrays,Object,1.{}+[]给出0 2.[]+{}给出了[object object]我知道1和2是怎么来的,但是 3.{}+[]+{}给出了[object object][object] 它怎么不应该是0[object object]?当您使用console.log时,它执行toString——当使用{}+[]时,它会给出[object object] console.log({}+[])代码在哪里执行?代码在Chrome REPL中执行。@mplungjan:我想这些都是错的。是正确的副本。Chrome

1.
{}+[]
给出
0

2.
[]+{}
给出了
[object object]
我知道1和2是怎么来的,但是

3.
{}+[]+{}
给出了
[object object][object]


它怎么不应该是
0[object object]

当您使用
console.log
时,它执行
toString
——当使用
{}+[]
时,它会给出
[object object]


console.log({}+[])代码在哪里执行?代码在Chrome REPL中执行。@mplungjan:我想这些都是错的。是正确的副本。Chrome使用一个简单的启发式方法,计算一个以
{
开头,以
}
结尾的行作为表达式。因此,
{}+[]+{}
中的
{}
都作为对象进行计算,而
{}+[]
中的
{}
是一个块。非常清楚的是:在其他环境(例如Firefox)中,您将得到
0[对象对象]
。正是Chrome控制台将
{}+[]+{}
解释为您编写
({}+[]+{})
({}+[])
这将
[对象对象]
这将
({}+[])
{}+[/code>与
控制台.log({}+[])
之间有什么区别,因为在
控制台.log
中,它调用
toString
。好的,但是
({}+[])
它也调用
toString()
,这是因为
()