6

如果你评估{} + 1你得到1,但如果你将相同的表达式分配给一个变量,比如说x = {} + 1,该变量将包含一个 string "[object Object]1"

为什么赋值会改变右侧表达式的语义?右手边的表达式不应该是“上下文无关的”吗?

4

1 回答 1

7
{} + 1

被解释为后跟 的代码块+1,其计算结果为1. 奥托:

x = {} + 1

被评估为new Object()加号1

如果您将原始声明更改为:

new Object() + 1

你会看到"[object Object]1"结果。

于 2013-10-09T19:11:38.510 回答