JavaScript赋值会改变添加操作语义吗?

MSX*_*MSX 6 javascript

如果你评估{} + 1得到1,但是如果你将相同的表达式赋给变量,比如说x = {} + 1变量将保存一个字符串"[object Object]1".

为什么赋值会改变右侧表达式的语义?右手边的表达不应该是"无背景的"吗?

zzz*_*Bov 7

{} + 1
Run Code Online (Sandbox Code Playgroud)

被解释为后跟的代码块+1,其求值为1.OTOH:

x = {} + 1
Run Code Online (Sandbox Code Playgroud)

被评为new Object()加号1

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

new Object() + 1
Run Code Online (Sandbox Code Playgroud)

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