JavaScript 赋值更改了加法操作语义

JavaScript assignment changes the addition operation semantics?

本文关键字:操作语义 赋值 JavaScript      更新时间:2023-09-26

如果你计算{} + 1你会得到1,但是如果你将相同的表达式分配给一个变量,比如x = {} + 1,变量将保存一个字符串"[object Object]1"

为什么赋值会更改右侧表达式的语义?右侧表达式不应该是"上下文无关"的吗?

{} + 1

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

x = {} + 1

被评估为new Object()1

如果您将原始对账单更改为:

new Object() + 1

结果,您将看到"[object Object]1"