如果您评估{} + 1
,则获得1
,但如果您将相同的表达式分配给变量,例如x = {} + 1
,则该变量将包含字符串"[object Object]1"
。< / p>
为什么赋值会改变右侧表达式的语义?右手边的表达不应该是“无背景的”吗?
答案 0 :(得分:7)
{} + 1
被解释为后跟+1
的代码块,其值为1
。 OTOH:
x = {} + 1
评估为new Object()
加1
如果您将原始陈述更改为:
new Object() + 1
结果会看到"[object Object]1"
。