括号之间的javascript一元加号
1.括号之间的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
{}+[]
给出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()
,这是因为()