当前位置: 首页 > 知识库问答 >
问题:

有人能解释一下ECMAScript规范中提到了运算符优先级和运算符关联性的地方吗

况浩邈
2023-03-14

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

但我没有发现任何关于运算符优先级和运算符关联性的内容。

有人能给我一个ECMAScript规范的链接吗,在那里他们描述了每个运算符的优先级和关联性。

非常感谢您的帮助。我需要知道ECMAScript规范是否没有提到

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

共有2个答案

金瑞
2023-03-14

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

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

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

黄扬
2023-03-14

作为一个例子,乘法对加法的算子优先在规范的第12.8节中

12.8加法运算符语法

  AdditiveExpression:
      MultiplicativeExpression
      AdditiveExpression + MultiplicativeExpression
      AdditiveExpression - MultiplicativeExpression

为可读性而编辑

由于这些结果,1 2*3通过AdditiveExpression生成,其中包含两个乘法表达式:

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

如果对其求值,则首先对乘法表达式求值(参见第12.8.3.1节)。

 类似资料:
  • 从高到低顺序如下: ^ not - (一元运算) * / + - ..(字符串连接) < > <= >= ~= == and or

  • 主要内容:总结本节我们从一个例子入手讲解,请看下面的代码: 运行结果: d=24, e=8 1) 对于表达式 ,如果按照数学规则推导,应该先计算乘法,再计算加法; 的结果为 8, 的结果为 24,所以 d 最终的值也是 24。从运行结果可以看出,我们的推论得到了证实,C语言也是先计算乘法再计算加法,和数学中的规则一样。 先计算乘法后计算加法,说明乘法运算符的优先级比加法运算符的优先级高。 所谓优先级,就是当多个

  • 有人能解释一下为什么操作符优先级适用于像JavaScript中的和这样的逻辑操作符吗?这在一个操作中意味着什么: 首先计算,因为在JavaScript中,运算符的优先级高于运算符。根据我如何知道不会被JavaScript引擎计算,因为在运算符之前有一个文字,而当某个东西在运算符之前是时,运算符之后的东西不会被计算这在JavaScript中称为“逻辑运算符短路”另一个示例是: 真警报() 即使函数调

  • 问题内容: 我似乎无法与三元运算符结合使用此代码的第一部分(+ =)。 我认为这段代码的工作方式如下: 但这是不正确的,因为这会导致控制台出现错误。 所以我的问题是我应该如何正确插入此代码? 问题答案: h.className = h.className + (h.className ? ‘ error’ : ‘error’) 您希望操作员为之工作,最好对此有所具体。 当然,不应有任何伤害 ,但这

  • 通过前面的学习我们知道运算符有不同的类型,当这些不同类型的运算符出现在同一个表达式中时,就必须遵循运算符的优先级来进行运算,才能保证运算的合理性和结果的正确性、唯一性。运算符的优先级决定了表达式中各个部分执行运算的先后顺序。 下表中详细介绍了 C# 中运算符的优先级顺序: 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[整型表达式] 左到右   () 圆括号 (表

  • 运算符的优先级决定了不同的运算符在表达式中计算的先后顺序,下表列出了 MySQL 中的各类运算符及其优先级。 优先级由低到高排列 运算符 1 =(赋值运算)、:= 2 II、OR 3 XOR 4 &&、AND 5 NOT 6 BETWEEN、CASE、WHEN、THEN、ELSE 7 =(比较运算)、<=>、>=、>、<=、<、<>、!=、 IS、LIKE、REGEXP、IN 8 | 9 & 10