我有这样的代码。
let y = 2;
y *= 3+4;
上面的行是y = y*3+4
的简写。因此,根据优先级,*
应该优先。所以我期待这样的计算,(2*3)+4
,这样应该返回10
。但为什么它会这样执行2*(3+4)
并返回14
。谁能详细解释一下吗?
最佳答案
了解 JS 解析器如何解释该语句会很有帮助:https://esprima.org/demo/parse.html?code=y%20*%3D%203%2B4
二进制表达式在赋值表达式之前计算。
+
是一个二进制表达式,以 3 和 4 作为操作数。
*=
是一个赋值表达式,其左侧为 y
,右侧为二进制表达式 (3 + 4 或 7)。
关于javascript - 为什么 Javascript 中的变量赋值运算符优先级会以其他方式工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76593465/