может кто-нибудь объяснить мне, где в спецификации ECMAScript упоминается приоритет оператора и ассоциативность операторов
Я читал MDN документы о оператора старшинства и ассоциативности оператора " оператора старшинства и ассоциативности оператора (MDN)" и хотел бы знать больше об этом чтении спецификации ECMAScript.
Но я не нашел там ничего о приоритете операторов и ассоциативности операторов.
Может ли кто-нибудь направить меня ссылкой на спецификацию ECMAScript, где они описывают приоритет и ассоциативность каждого оператора.
Любая помощь очень ценится. И мне нужно знать, не упоминается ли в спецификации ECMAScript ничего о
приоритет и ассоциативность каждого оператора, как разработчики языка знают, какой оператор разрешить первым перед другим, я имею в виду, как они знают, какой оператор должен быть оценен перед другим оператором
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).
Обычно мы изучаем все эти вещи в курсе под названием "Дизайн компилятора". В этом курсе мы исследуем, как создаются эти правила. Какие бывают уровни и ассоциации операторов.
Эти правила относятся не только к JavaScript. Некоторые языки имеют одинаковые правила, некоторые - другие. Если вы хотите узнать, как создаются эти правила, я бы порекомендовал вам изучить некоторые основы проектирования компилятора.
Для понимания концепций я всегда обращаюсь к https://javascript.info/operators