2

我正在阅读有关运算符优先级和运算符关联性的 mdn 文档“运算符优先级和运算符关联性(MDN) ”,并想通过阅读ECMAScript 规范了解更多有关它的信息。

但是我在那里没有找到任何关于运算符优先级和运算符关联性的信息。

有人可以通过指向 ECMAScript 规范的链接来指导我,其中描述了每个运算符的优先级和关联性

非常感谢任何帮助。我需要知道 ECMAScript 规范是否没有提到任何关于

每个运算符的优先级和关联性 语言实现者如何知道在另一个运算符之前先解决哪个运算符 我的意思是他们如何知道应该在另一个运算符之前评估哪个运算符

4

2 回答 2

2

例如,乘法优于加法的运算符优先级在规范的第 12.8 节中

12.8 加法运算符语法

  AdditiveExpression:
      MultiplicativeExpression
      AdditiveExpression + MultiplicativeExpression
      AdditiveExpression - MultiplicativeExpression

为便于阅读而编辑

因为这些产生式1 + 2 * 3是通过 AdditiveExpression 产生的,里面有两个 MultiplicativeExpression:

    AdditiveExpression
    (AdditiveExpression + MultiplicativeExpression)
    ((MultiplicativeExpression) + (MultiplicativeExpression MultiplicativeOperator MultiplicativeExpression))
    //...
    ((1) + (2 * 3))

如果您对此进行评估,则首先评估 MultiplicativeExpressions(请参阅第 12.8.3.1 节)。

于 2020-08-09T11:21:30.393 回答
-2

通常我们在名为“编译器设计”的课程中学习所有这些东西。在本课程中,我们将探讨如何创建这些规则。运营商的级别和协会是什么。

这些规则不仅仅特定于 JavaScript。有些语言有相同的规则,有些则不同。如果您想了解这些规则是如何创建的,我建议您学习一些编译器设计的基础知识。

为了理解这些概念,我总是参考https://javascript.info/operators

于 2020-08-09T09:51:47.007 回答