javascript - 为什么 Javascript 中的变量赋值运算符优先级会以其他方式工作

标签 javascript operator-precedence

我有这样的代码。

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/

相关文章:

rust - if-let 和一对短路吗?

javascript - 具有多个值和图标的 jQuery 自动填充(通过电子邮件发送到字段)

JavaScript - 动画旋转算法

perl - Perl 中的列表运算符优先级

c - Bison 优先级没用?它不起作用

java - 在 Java 中,为什么括号中的赋值不会在表达式的其余部分被求值之前发生?

javascript - 正则表达式:使用 javascript 从字符串中获取格式为 n.n.n 的数字?

javascript - jQuery 验证 require_from_group 仅验证第一个元素

javascript - 如何将匿名帐户转换为永久帐户

MySQL INSERT 和 SELECT 优先顺序