この章では、JavaScript 言語のすべての演算子、式、キーワードについて文書化しています。
式と演算子 (カテゴリ別)
アルファベット順リストは左側のサイドバーをご覧ください。
基本式
JavaScript の基本的なキーワードと一般的な式です。
thisthisキーワードは関数の実行コンテキストを参照します。functionfunctionキーワードは関数式を定義します。classclassキーワードはクラス式を定義します。function*function*キーワードはジェネレータ関数式を定義します。yield- ジェネレータ関数の一時停止と再開を行います。
yield*- 別のジェネレータ関数または反復可能オブジェクトを代行します。
-
async function async functionは非同期の関数式を定義します。-
await - 非同期関数式の停止/再開と、promise の resolution/rejection を待ちます。
[]- 配列初期化子またはリテラル構文です。
{}- オブジェクト初期化子またはリテラル構文です。
/ab+c/i- 正規表現式のリテラル構文です。
( )- グループ化演算子です。
左辺式
左辺値は、代入の対象になります。
- プロパティアクセス演算子
- プロパティアクセス演算子はオブジェクトのプロパティやメソッドへのアクセスを提供します
(object.propertyやobject["property"])。 newnew演算子はコンストラクタのインスタンスを作成します。- new.target
- コンストラクタ内で
new.targetを使うことで、newによって呼び出されるコンストラクタを参照できます。 supersuperキーワードは親コンストラクタを呼び出します。...obj- 展開記法 (スプレッド記法) は、式を複数の引数または複数の要素に展開して、それぞれ関数呼び出しまたは配列リテラルに渡します。
インクリメントとデクリメント
接尾/接頭辞のインクリメント演算子と接尾/接頭辞のデクリメント演算子です。
単項演算子
単項演算は、1 個のオペランドによる演算です。
deletedelete演算子は、オブジェクトからプロパティを削除します。voidvoid演算子は、式の戻り値を破棄します。typeoftypeof演算子は、与えられたオブジェクトの型を判別します。+- 単項正値演算子は、そのオペランドを Number 型に変換します。
-- 単項負値演算子は、そのオペランドを Number 型に変換して正負を反転します。
~- ビット否定演算子です。
!- 論理否定演算子です。
算術演算子
算術演算子は、数値 (リテラルまたは値) をオペランドとして取り、1 個の数値を返します。
**- べき乗演算子です。
関係演算子
比較演算子は、そのオペランドを比較し、その比較が真かどうかに基づいて Boolean 値を返します。
inin演算子は、与えられたプロパティをオブジェクトが持っているかどうかを判別します。instanceofinstanceof演算子は、オブジェクトが別のオブジェクトのインスタンスかどうかを判別します。<- 小なり演算子です。
>- 大なり演算子です。
<=- 以下演算子です。
>=- 以上演算子です。
注記: => は演算子ではなく、アロー関数 のためのノーテーションです。
等値演算子
等値演算子の評価結果は常に、比較が真かどうかに基づいて Boolean 型の値になります。
ビットシフト演算子
オペランドのすべてのビットをシフト演算します。
バイナリビット演算子
ビット演算子は、そのオペランドを 32 ビット (0 と 1) の並びとして扱い、標準の JavaScript 数値を返します。
バイナリ論理演算子
論理演算には、一般的に (論理) 真偽値が使用され、それが置かれた時に真偽値を返します。
条件 (三項) 演算子
(condition ? ifTrue : ifFalse)-
この条件演算子は、条件の論理値を基に、2 つの値のいずれか一方を返します。
代入演算子
代入演算子は、右辺のオペランドに基づいて、値を左辺のオペランドに代入します。
=- 代入演算子です。
*=- 乗算値を代入します。
/=- 除算値を代入します。
%=- 剰余値を代入します。
+=- 加算値を代入します。
-=- 減算値を代入します。
<<=- 左シフトした値を代入します。
>>=- 右シフトした値を代入します。
>>>=- 符号なしの右シフトした値を代入します。
&=- ビット論理積 (AND) の値を代入します。
^=- ビット排他的論理和 (XOR) の値を代入します。
|=- ビット論理和 (OR) の値を代入します。
[a, b] = [1, 2]
{a, b} = {a:1, b:2}-
分割代入は、配列やオブジェクトのプロパティを、配列やオブジェクトリテラルに似た構文を使用して変数に代入します。
カンマ演算子
,- カンマ演算子は、複数の式を単一の文で評価し、その最後の式の結果を返します。
非標準の機能
- レガシージェネレータ関数
functionキーワードは、式の内部でレガシージェネレータ関数の定義に使用されます。関数をレガシージェネレータにするには、関数本体に少なくとも 1 個のyield式を含めてください。- 式クロージャ
- 式クロージャ構文は、単純な関数を書くための省略記法です。
-
[for (x of y) x] - 配列内包表記です。
-
(for (x of y) y) - ジェネレータ内包表記です。
仕様
| 仕様書 | 状況 | コメント |
|---|---|---|
| ECMAScript 1st Edition (ECMA-262) Expressions の定義 |
標準 | 初期定義。 |
| ECMAScript 5.1 (ECMA-262) Expressions の定義 |
標準 | |
| ECMAScript 2015 (6th Edition, ECMA-262) ECMAScript Language: Expressions の定義 |
標準 | 新仕様: 展開演算子、分割代入、super キーワード、配列内包表記、ジェネレータ内包表記 |
| ECMAScript (ECMA-262) ECMAScript Language: Expressions の定義 |
現行の標準 |
ブラウザ実装状況
| デスクトップ | モバイル | サーバー | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Array comprehensions | Chrome 未対応 なし | Edge 未対応 なし | Firefox 未対応 30 — 58 | IE 未対応 なし | Opera 未対応 なし | Safari 未対応 なし | WebView Android 未対応 なし | Chrome Android 未対応 なし | Firefox Android 未対応 30 — 58 | Opera Android 未対応 なし | Safari iOS 未対応 なし | Samsung Internet Android 未対応 なし | nodejs 未対応 なし |
async function expression | Chrome 完全対応 55 | Edge 完全対応 15 | Firefox 完全対応 52 | IE 未対応 なし | Opera 完全対応 42 | Safari 完全対応 10.1 | WebView Android 完全対応 55 | Chrome Android 完全対応 55 | Firefox Android 完全対応 52 | Opera Android 完全対応 42 | Safari iOS 完全対応 10.3 | Samsung Internet Android 完全対応 6.0 | nodejs
完全対応
7.6.0
|
await | Chrome 完全対応 55 | Edge 完全対応 14 | Firefox 完全対応 52 | IE 未対応 なし | Opera 完全対応 42 | Safari 完全対応 10.1 | WebView Android 完全対応 55 | Chrome Android 完全対応 55 | Firefox Android 完全対応 52 | Opera Android 完全対応 42 | Safari iOS 完全対応 10.3 | Samsung Internet Android 完全対応 6.0 | nodejs
完全対応
7.6.0
|
class | Chrome 完全対応 42 | Edge 完全対応 13 | Firefox 完全対応 45 | IE 未対応 なし | Opera 完全対応 29 | Safari 完全対応 7 | WebView Android 完全対応 42 | Chrome Android 完全対応 42 | Firefox Android 完全対応 45 | Opera Android 完全対応 29 | Safari iOS 完全対応 7 | Samsung Internet Android 完全対応 4.0 | nodejs
完全対応
6.0.0
|
| Comma operator | Chrome 完全対応 1 | Edge 完全対応 12 | Firefox 完全対応 1 | IE 完全対応 3 | Opera 完全対応 4 | Safari 完全対応 1 | WebView Android 完全対応 1 | Chrome Android 完全対応 18 | Firefox Android 完全対応 4 | Opera Android 完全対応 10.1 | Safari iOS 完全対応 1 | Samsung Internet Android 完全対応 1.0 | nodejs 完全対応 0.1.100 |
Conditional operator (c ? t : f) | Chrome 完全対応 1 | Edge 完全対応 12 | Firefox 完全対応 1 | IE 完全対応 3 | Opera 完全対応 3 | Safari 完全対応 1 | WebView Android 完全対応 1 | Chrome Android 完全対応 18 | Firefox Android 完全対応 4 | Opera Android 完全対応 10.1 | Safari iOS 完全対応 1 | Samsung Internet Android 完全対応 1.0 | nodejs 完全対応 0.1.100 |
delete | Chrome 完全対応 1 | Edge 完全対応 12 | Firefox 完全対応 1 | IE 完全対応 4 | Opera 完全対応 9 | Safari 完全対応 1 | WebView Android 完全対応 1 | Chrome Android 完全対応 18 | Firefox Android 完全対応 4 | Opera Android 完全対応 10.1 | Safari iOS 完全対応 1 | Samsung Internet Android 完全対応 1.0 | nodejs 完全対応 0.1.100 |
| Destructuring assignment | Chrome 完全対応 49 | Edge 完全対応 14 | Firefox
完全対応
41
| IE 未対応 なし | Opera 完全対応 36 | Safari 完全対応 8 | WebView Android 完全対応 49 | Chrome Android 完全対応 49 | Firefox Android
完全対応
41
| Opera Android 完全対応 36 | Safari iOS 完全対応 8 | Samsung Internet Android 完全対応 5.0 | nodejs 完全対応 6.0.0 |
| Expression closures | Chrome 未対応 なし | Edge 未対応 なし | Firefox 未対応 3 — 60 | IE 未対応 なし | Opera 未対応 なし | Safari 未対応 なし | WebView Android 未対応 なし | Chrome Android 未対応 なし | Firefox Android 未対応 4 — 60 | Opera Android 未対応 なし | Safari iOS 未対応 なし | Samsung Internet Android 未対応 なし | nodejs 未対応 なし |
function | Chrome 完全対応 1 | Edge 完全対応 12 | Firefox 完全対応 1 | IE 完全対応 3 | Opera 完全対応 3 | Safari 完全対応 1 | WebView Android 完全対応 1 | Chrome Android 完全対応 18 | Firefox Android 完全対応 4 | Opera Android 完全対応 10.1 | Safari iOS 完全対応 1 | Samsung Internet Android 完全対応 1.0 | nodejs 完全対応 0.1.100 |
function* | Chrome 完全対応 49 | Edge 完全対応 12 | Firefox 完全対応 26 | IE 未対応 なし | Opera 完全対応 36 | Safari 完全対応 10 | WebView Android 完全対応 49 | Chrome Android 完全対応 49 | Firefox Android 完全対応 26 | Opera Android 完全対応 36 | Safari iOS 完全対応 10 | Samsung Internet Android 完全対応 5.0 | nodejs 完全対応 4.0.0 |
| Generator comprehensions | Chrome 未対応 なし | Edge 未対応 なし | Firefox 未対応 30 — 58 | IE 未対応 なし | Opera 未対応 なし | Safari 未対応 なし | WebView Android 未対応 なし | Chrome Android 未対応 なし | Firefox Android 未対応 30 — 58 | Opera Android 未対応 なし | Safari iOS 未対応 なし | Samsung Internet Android 未対応 なし | nodejs 未対応 なし |
Grouping operator () | Chrome 完全対応 1 | Edge 完全対応 12 | Firefox 完全対応 1 | IE 完全対応 3 | Opera 完全対応 3 | Safari 完全対応 1 | WebView Android 完全対応 1 | Chrome Android 完全対応 18 | Firefox Android 完全対応 4 | Opera Android 完全対応 10.1 | Safari iOS 完全対応 1 | Samsung Internet Android 完全対応 1.0 | nodejs 完全対応 0.1.100 |
in | Chrome 完全対応 1 | Edge 完全対応 12 | Firefox 完全対応 1 | IE 完全対応 5.5 | Opera 完全対応 4 | Safari 完全対応 1 | WebView Android 完全対応 1 | Chrome Android 完全対応 18 | Firefox Android 完全対応 4 | Opera Android 完全対応 10.1 | Safari iOS 完全対応 1 | Samsung Internet Android 完全対応 1.0 | nodejs 完全対応 0.1.100 |
instanceof | Chrome 完全対応 1 | Edge 完全対応 12 | Firefox 完全対応 1 | IE 完全対応 5 | Opera 完全対応 4 | Safari 完全対応 1 | WebView Android 完全対応 1 | Chrome Android 完全対応 18 | Firefox Android 完全対応 4 | Opera Android 完全対応 10.1 | Safari iOS 完全対応 1 | Samsung Internet Android 完全対応 1.0 | nodejs 完全対応 0.1.100 |
| Legacy generator function | Chrome 未対応 なし | Edge 未対応 なし | Firefox 未対応 2 — 58 | IE 未対応 なし | Opera 未対応 なし | Safari 未対応 なし | WebView Android 未対応 なし | Chrome Android 未対応 なし | Firefox Android 未対応 4 — 58 | Opera Android 未対応 なし | Safari iOS 未対応 なし | Samsung Internet Android 未対応 なし | nodejs 未対応 なし |
new | Chrome 完全対応 1 | Edge 完全対応 12 | Firefox 完全対応 1 | IE 完全対応 3 | Opera 完全対応 3 | Safari 完全対応 1 | WebView Android 完全対応 1 | Chrome Android 完全対応 18 | Firefox Android 完全対応 4 | Opera Android 完全対応 10.1 | Safari iOS 完全対応 1 | Samsung Internet Android 完全対応 1.0 | nodejs 完全対応 0.1.100 |
new.target | Chrome 完全対応 46 | Edge 完全対応 13 | Firefox 完全対応 41 | IE 未対応 なし | Opera 完全対応 33 | Safari 完全対応 11 | WebView Android 完全対応 46 | Chrome Android 完全対応 46 | Firefox Android 完全対応 41 | Opera Android 完全対応 33 | Safari iOS 完全対応 11 | Samsung Internet Android 完全対応 5.0 | nodejs 完全対応 5.0.0 |
Nullish coalescing operator (??) | Chrome 完全対応 80 | Edge 完全対応 80 | Firefox 完全対応 72 | IE 未対応 なし | Opera 未対応 なし | Safari 完全対応 13.1 | WebView Android 完全対応 80 | Chrome Android 完全対応 80 | Firefox Android 未対応 なし | Opera Android 未対応 なし | Safari iOS 完全対応 13.4 | Samsung Internet Android 未対応 なし | nodejs 未対応 なし |
| Object initializer | Chrome 完全対応 1 | Edge 完全対応 12 | Firefox 完全対応 1 | IE 完全対応 1 | Opera 完全対応 4 | Safari 完全対応 1 | WebView Android 完全対応 1 | Chrome Android 完全対応 18 | Firefox Android 完全対応 4 | Opera Android 完全対応 10.1 | Safari iOS 完全対応 1 | Samsung Internet Android 完全対応 1.0 | nodejs 完全対応 0.1.100 |
Optional chaining operator (?.) | Chrome
完全対応
80
| Edge
完全対応
80
| Firefox 完全対応 74 | IE 未対応 なし | Opera
完全対応
67
| Safari 未対応 なし | WebView Android 完全対応 80 | Chrome Android
完全対応
80
| Firefox Android 未対応 なし | Opera Android 未対応 なし | Safari iOS 未対応 なし | Samsung Internet Android 未対応 なし | nodejs 未対応 なし |
Pipeline operator (|>) | Chrome 未対応 なし | Edge 未対応 なし | Firefox 未対応 なし | IE 未対応 なし | Opera 未対応 なし | Safari 未対応 なし | WebView Android 未対応 なし | Chrome Android 未対応 なし | Firefox Android 未対応 なし | Opera Android 未対応 なし | Safari iOS 未対応 なし | Samsung Internet Android 未対応 なし | nodejs 未対応 なし |
| Property accessors | Chrome 完全対応 1 | Edge 完全対応 12 | Firefox 完全対応 1 | IE 完全対応 3 | Opera 完全対応 4 | Safari 完全対応 1 | WebView Android 完全対応 1 | Chrome Android 完全対応 18 | Firefox Android 完全対応 4 | Opera Android 完全対応 10.1 | Safari iOS 完全対応 1 | Samsung Internet Android 完全対応 1.0 | nodejs 完全対応 0.1.100 |
super | Chrome 完全対応 42 | Edge 完全対応 13 | Firefox 完全対応 45 | IE 未対応 なし | Opera 完全対応 29 | Safari 完全対応 7 | WebView Android 完全対応 42 | Chrome Android 完全対応 42 | Firefox Android 完全対応 45 | Opera Android 完全対応 29 | Safari iOS 完全対応 7 | Samsung Internet Android 完全対応 4.0 | nodejs 完全対応 6.0.0 |
this | Chrome 完全対応 1 | Edge 完全対応 12 | Firefox 完全対応 1 | IE 完全対応 4 | Opera 完全対応 9.5 | Safari 完全対応 1 | WebView Android 完全対応 1 | Chrome Android 完全対応 18 | Firefox Android 完全対応 4 | Opera Android 完全対応 10.1 | Safari iOS 完全対応 1 | Samsung Internet Android 完全対応 1.0 | nodejs 完全対応 0.1.100 |
typeof | Chrome 完全対応 1 | Edge 完全対応 12 | Firefox 完全対応 1 | IE 完全対応 3 | Opera 完全対応 3 | Safari 完全対応 1 | WebView Android 完全対応 1 | Chrome Android 完全対応 18 | Firefox Android 完全対応 4 | Opera Android 完全対応 10.1 | Safari iOS 完全対応 1 | Samsung Internet Android 完全対応 1.0 | nodejs 完全対応 0.1.100 |
void | Chrome 完全対応 1 | Edge 完全対応 12 | Firefox 完全対応 1 | IE 完全対応 5 | Opera 完全対応 4 | Safari 完全対応 3.2 | WebView Android 完全対応 1 | Chrome Android 完全対応 18 | Firefox Android 完全対応 4 | Opera Android 完全対応 10.1 | Safari iOS 完全対応 3 | Samsung Internet Android 完全対応 1.0 | nodejs 完全対応 0.1.100 |
yield | Chrome 完全対応 39 | Edge 完全対応 12 | Firefox
完全対応
26
| IE 未対応 なし | Opera 完全対応 26 | Safari 完全対応 10 | WebView Android 完全対応 39 | Chrome Android 完全対応 39 | Firefox Android
完全対応
26
| Opera Android 完全対応 26 | Safari iOS 完全対応 10 | Samsung Internet Android 完全対応 4.0 | nodejs
完全対応
4.0.0
|
yield* | Chrome 完全対応 39 | Edge 完全対応 12 | Firefox
完全対応
27
| IE 未対応 なし | Opera 完全対応 26 | Safari 完全対応 10 | WebView Android 完全対応 39 | Chrome Android 完全対応 39 | Firefox Android
完全対応
27
| Opera Android 完全対応 26 | Safari iOS 完全対応 10 | Samsung Internet Android 完全対応 4.0 | nodejs
完全対応
4.0.0
|
凡例
- 完全対応
- 完全対応
- 未対応
- 未対応
- 実験的。動作が変更される可能性があります。
- 実験的。動作が変更される可能性があります。
- 非標準。ブラウザー間の互換性が低い可能性があります。
- 非標準。ブラウザー間の互換性が低い可能性があります。
- 非推奨。新しいウェブサイトでは使用しないでください。
- 非推奨。新しいウェブサイトでは使用しないでください。
- 実装ノートを参照してください。
- 実装ノートを参照してください。
- ユーザーが明示的にこの機能を有効にしなければなりません。
- ユーザーが明示的にこの機能を有効にしなければなりません。