为什么在{{} + 1`在Chrome和Firefox中获得数字1,而在Node.js中使用' 1'?

在Javascript中增加是非常惊人的。
在Chrome和Firefox中, {} + 1等于数字1; 但在Node.js中, {} + 1等于string'[object Object] 1'。 另一方面,在浏览器和Node.js中, 1 + {}等于'1 [object Object]'。
谁能解释为什么在浏览器中{} + 1等于1?

这有点复杂。 发生这种情况是因为大多数JavaScript引擎将代码块解释为代码块而不是对象。 因此{}+1基本相同。 如果你这样做(例如)

 ({}+1}) 

那么括号()内的代码将被解释为一个expression式,而不是代码块。 因此{}成为一个实际的对象。

阅读这个更多的细节:

http://www.2ality.com/2012/01/object-plus-object.html

文章还解释了为什么它在Node.Js是不同的。