4

Javascript中的加法真的很棒。
在 Chrome 和 Firefox 中,{} + 1等于数字 1;但在 Node.js 中,{} + 1等于字符串 '[object Object]1'。另一方面,1 + {}在浏览器和 Node.js 中都等于 '1[object Object]'。
谁能解释为什么{} + 1在浏览器中等于 1?

4

1 回答 1

14

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

({}+1})

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

阅读本文了解更多详情:

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

文章还解释了为什么它在 Node.Js 中有所不同。

于 2012-09-04T13:08:49.337 回答