【问题标题】:JavaScript code reading order with multiple assignment operators带有多个赋值运算符的 JavaScript 代码阅读顺序
【发布时间】:2019-12-26 08:47:26
【问题描述】:

我得到了这段简单的代码:

var x=10;
var y=8;
 x -= y += 9;


alert(x+" and "+y);

结果将是“-7 和 17”。

为什么 JavaScript 在 x -= y 之前执行 y +=9?

【问题讨论】:

  • 因为 -=+=right associative operators 并且这是从右到左计算的。
  • 您可以在astexplorer.net查看订单。展开右侧面板上的表达式以查看顺序
  • @vlaz 停止在 cmets 中回答! ;)
  • @JonasWilms 不是所有事情都与优先级有关吗?我不想回答这个问题,然后发现有人问了另一个问题,仍然只是“如何评估运营商”。
  • @vlaz 不是我所知道的......而且你已经给出了一个很好的答案(作为评论),所以将它作为答案发布不会有任何害处。 (积极的副作用是你更接近 js 金牌徽章,我不再需要欺骗你的建议;))

标签: javascript operators variable-assignment


【解决方案1】:

运算符优先级决定了运算符相互之间的解析方式。高优先级的运算符成为低优先级运算符的操作数

关联性决定了相同优先级的运算符的解析方式。

由于-= and += 是右结合的,因此它们是从右到左计算的。

因此y +=9 首先得到评估。

Reference Link for operators

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-12
    • 2010-12-17
    • 2021-09-09
    相关资源
    最近更新 更多