?um/p1-90`yield と await は文法上は
let
await 0;
yield および await を除くいずれかの The syntax-directed operation UNKNOWN takes UNPARSEABLE ARGUMENTS. It is defined piecewise over the following productions:
非 strict コードではキーワード yield を識別子として使用できる。yield の束縛を
次の生成規則インスタンスを処理する際
this キーワードfalse なら true なら 配列要素は先頭・中間・末尾で省略(elide)できる。要素リスト中のカンマが直前に
The syntax-directed operation UNKNOWN takes UNPARSEABLE ARGUMENTS. It is defined piecewise over the following productions:
標準組込み Array prototype が [[Set]] による新たな自身プロパティ生成を妨げるよう改変されていても、自身プロパティ確立を保証するため
オブジェクト初期化子はオブジェクトの初期化をリテラル風の書式で表す式であり、波括弧で囲まれた 0 個以上の
特定の文脈では
この生成規則は
PropertyNameList が返すリストには
The syntax-directed operation UNKNOWN takes UNPARSEABLE ARGUMENTS. It is defined piecewise over the following productions:
The syntax-directed operation UNKNOWN takes UNPARSEABLE ARGUMENTS. It is defined piecewise over the following productions:
The syntax-directed operation UNKNOWN takes UNPARSEABLE ARGUMENTS. It is defined piecewise over the following productions:
The abstract operation UNKNOWN takes UNPARSEABLE ARGUMENTS. It performs the following steps when called:
d, g, i, m, s, u, v, y 以外のコードポイントが含まれるか、同一コードポイントが複数回含まれるなら u を含むなら u = v を含むなら v = The syntax-directed operation UNKNOWN takes UNPARSEABLE ARGUMENTS. It is defined piecewise over the following productions:
The abstract operation UNKNOWN takes UNPARSEABLE ARGUMENTS. It performs the following steps when called:
raw が
The abstract operation GetTemplateObject takes argument templateLiteral (Parse Node) and returns Array. It performs the following steps when called:
テンプレートオブジェクトの生成は突然の完了を引き起こさない。
ある
将来の版ではテンプレートオブジェクトに追加の列挙不可プロパティを定義する可能性がある。
The syntax-directed operation UNKNOWN takes UNPARSEABLE ARGUMENTS. It is defined piecewise over the following productions:
+ 演算子ではなく String.prototype.concat と同様のセマンティクス。
+ 演算子ではなく String.prototype.concat と同様。
String.prototype.concat と同様で + 演算子とは異なる。
このアルゴリズムは delete や typeof などの演算子をかっこ付き式に適用可能とするためである。
次の生成規則インスタンスを処理する際
この生成規則は次のコードに自動セミコロン挿入規則(
a?.b
`c`
これはオプショナルチェイニングを用いない類似コードとの一貫性を保つ目的である:
a.b
`c`
後者は自動セミコロン挿入が適用されず有効な文である。
プロパティは名前でアクセスされ、ドット記法:
またはブラケット記法を用いる:
ドット記法は次の構文変換で説明される:
これは動作上次と同一である:
同様に
は次と同一である:
ここで <identifier-name-string> は
The abstract operation EvaluatePropertyAccessWithExpressionKey takes arguments baseValue (ECMAScript 言語値), expression (
a[b] = c の場合は c の評価後まで行われない。The abstract operation EvaluatePropertyAccessWithIdentifierKey takes arguments baseValue (ECMAScript 言語値), identifierName (
new 演算子 (The new Operator)The abstract operation EvaluateNew takes arguments constructExpr (
ステップ
The abstract operation EvaluateCall takes arguments func (ECMAScript 言語値), ref (ECMAScript 言語値または
super キーワード (The super Keyword)super[b] = c のケースでは c 評価後。The abstract operation GetSuperConstructor takes no arguments and returns ECMAScript 言語値. It performs the following steps when called:
The abstract operation MakeSuperPropertyReference takes arguments actualThis (ECMAScript 言語値), propertyKey (ECMAScript 言語値), and strict (Boolean) and returns
引数リストの評価は値の
The syntax-directed operation UNKNOWN takes UNPARSEABLE ARGUMENTS. It is defined piecewise over the following productions:
?. トークンで始まる。The syntax-directed operation UNKNOWN takes UNPARSEABLE ARGUMENTS. It is defined piecewise over the following productions:
The abstract operation EvaluateImportCall takes argument specifierExpression (Parse Node) and optional argument optionsExpression (Parse Node) and returns 正常完了で Promise を含むか、または突然の完了. It performs the following steps when called:
The abstract operation ContinueDynamicImport takes arguments promiseCapability (
タグ付きテンプレートは
The host-defined abstract operation HostGetImportMetaProperties takes argument moduleRecord (
デフォルト実装は新しい空
The host-defined abstract operation HostFinalizeImportMeta takes arguments importMeta (Object) and moduleRecord (
多くの
デフォルト実装は
delete 演算子 (The delete Operator)
導出された
であり、
最後の規則により delete (((foo))) のような式は最初の規則が再帰適用されるため早期エラーになる。
strict mode コード内で delete 演算子が出現し、その delete の対象プロパティが { [[Configurable]]:
void 演算子 (The void Operator)値を使用しない場合でも副作用が観測され得るため
typeof 演算子 (The typeof Operator)+ 演算子 (Unary + Operator)単項 + 演算子は被演算子を Number 型に変換する。
- 演算子 (Unary - Operator)単項 - は被演算子を数値へ変換し符号を反転する。
~ ) (Bitwise NOT Operator)! ) (Logical NOT Operator)* は乗算で被演算子の積を生成する。/ は除算で被演算子の商を生成する。% は暗黙の除算に基づく剰余を生成する。+ ) (The Addition Operator)加算演算子は
- ) (The Subtraction Operator)- 演算子は減算を行い被演算子の差を生成する。
<< ) (The Left Shift Operator)左オペランドを右オペランドで指定された回数だけビット左シフトする。
>> ) (The Signed Right Shift Operator)左オペランドを右オペランドで指定された回数だけ符号拡張しつつビット右シフトする。
>>> ) (The Unsigned Right Shift Operator)左オペランドを右オペランドで指定回数だけゼロ埋めしつつビット右シフトする。
関係演算子の評価結果は常に Boolean 型で、被演算子間にその関係が成り立つかを示す。
[In] 文法パラメータは関係式内の in 演算子と for 文の in を混同しないために必要。
The abstract operation InstanceofOperator takes arguments V (ECMAScript 言語値) and target (ECMAScript 言語値) and returns 正常完了で Boolean を含むか throw 完了. It performs the following steps when called:
instanceof 既定セマンティクスを用いる。
等価演算子の評価結果は常に Boolean 型で、演算子が命名する関係が両被演算子間で成り立つかを表す。
上記定義に関して:
\`${a}\` == \`${b}\` により強制できる。
+a == +b により強制できる。
!a == !b により強制できる。
等価演算子は次の不変条件を保持する:
A != B は !(A == B) と同値。
A == B は評価順序を除き B == A と同値。
等価演算子は常に推移的とは限らない。例えば同じ String 値を表す異なる 2 つの String オブジェクトは、それぞれがリテラル文字列とは == で等しいが、互いには等しくない:
new String("a") == "a" および "a" == new String("a") は new String("a") == new String("a") は 文字列比較はコードユニット列の単純な同値判定であり、Unicode 仕様の正規等価や照合順序は考慮されない。Unicode の正規等価な String が不等と判定され得る。両 String は既に正規化されているものとみなす。
&& および || 演算子の結果値は必ずしも Boolean 型ではなく、常に 2 つの被演算子のいずれかの値そのものである。
? : ) (Conditional Operator)ECMAScript の
| assignmentOpText | opText |
|---|---|
**= | ** |
*= | * |
/= | / |
%= | % |
+= | + |
-= | - |
<<= | << |
>>= | >> |
>>>= | >>> |
&= | & |
^= | ^ |
|= | | |
The abstract operation ApplyStringOrNumericBinaryOperator takes arguments lVal (ECMAScript 言語値), opText (**, *, /, %, +, -, <<, >>, >>>, &, ^, |), and rVal (ECMAScript 言語値) and returns 正常完了で String / BigInt / Number のいずれか、または throw 完了. It performs the following steps when called:
+ なら** なら ? / なら ? % なら ? >>> なら ? | opText | operation |
|---|---|
* | |
+ | |
- | |
<< | |
>> | |
& | |
^ | |
| | |
| opText | operation |
|---|---|
** | |
* | |
/ | |
% | |
+ | |
- | |
<< | |
>> | |
>>> | |
& | |
^ | |
| | |
手順
手順
The abstract operation EvaluateStringOrNumericBinaryExpression takes arguments leftOperand (Parse Node), opText (Unicode コードポイント列), and rightOperand (Parse Node) and returns 正常完了で String / BigInt / Number のいずれか、または突然の完了. It performs the following steps when called:
次の生成規則インスタンスを処理する特定状況で
The syntax-directed operation UNKNOWN takes UNPARSEABLE ARGUMENTS. It is defined piecewise over the following productions:
The syntax-directed operation UNKNOWN takes UNPARSEABLE ARGUMENTS. It is defined piecewise over the following productions:
The syntax-directed operation UNKNOWN takes UNPARSEABLE ARGUMENTS. It is defined piecewise over the following productions:
The syntax-directed operation UNKNOWN takes UNPARSEABLE ARGUMENTS. It is defined piecewise over the following productions:
The syntax-directed operation UNKNOWN takes UNPARSEABLE ARGUMENTS. It is defined piecewise over the following productions:
, ) (Comma Operator)値は使用されないが、副作用が観測可能であるため