ECMAScript | Оператор выражения

Синтаксис оператора выражения

ExpressionStatement [Yield, Await] :

[lookahead ∉ { {, function, async [не LineTerminator здесь] function, class, let [ }] Expression [+In, ?Yield, ?Await] ;

Примечание

ExpressionStatement не может начинаться с левой фигурной скобки { U+007B (LEFT CURLY BRACKET), потому что это может сделать его неоднозначным с производством блока Block.

ExpressionStatement не может начинаться с ключевых слов function или class (функции или класса), потому что это сделало бы его неоднозначным с FunctionDeclaration, GeneratorDeclaration или ClassDeclaration.

ExpressionStatement не может начинаться с async function (асинхронной функции), потому что это сделало бы его неоднозначным с AsyncFunctionDeclaration или AsyncGeneratorDeclaration.

ExpressionStatement не может начинаться с последовательности из двух токенов let [, потому что это сделало бы его неоднозначным с let LexicalDeclaration, первая LexicalBinding которой была ArrayBindingPattern.

14.5.1 Семантика времени выполнения: Оценка

ExpressionStatement : Expression ;

1. Пусть exprRef будет результатом вычисления Expression.
2. Вернуть ? GetValue(exprRef).

Информационные ссылки

Стандарт ECMAScript — Раздел «14.5 Expression Statement» — https://tc39.es/ecma262/#sec-expression-statement

Поделись записью