如果你评估{} + 1得到1,但是如果你将相同的表达式赋给变量,比如说x = {} + 1变量将保存一个字符串"[object Object]1".
为什么赋值会改变右侧表达式的语义?右手边的表达不应该是"无背景的"吗?
{} + 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"结果.