この章では、JavaScript 言語のすべての演算子、式、キーワードについて文書化しています。

式と演算子 (カテゴリ別)

アルファベット順リストは左側のサイドバーをご覧ください。

基本式

JavaScript の基本的なキーワードと一般的な式です。

this
this キーワードは関数の実行コンテキストを参照します。
function
function キーワードは関数式を定義します。
class
class キーワードはクラス式を定義します。
function*
function* キーワードはジェネレータ関数式を定義します。
yield
ジェネレータ関数の一時停止と再開を行います。
yield*
別のジェネレータ関数または反復可能オブジェクトを代行します。
async function*
async function は非同期の関数式を定義します。
await
非同期関数式の停止/再開と、promise の resolution/rejection を待ちます。
[]
配列初期化子またはリテラル構文です。
{}
オブジェクト初期化子またはリテラル構文です。
/ab+c/i
正規表現式のリテラル構文です。
( )
グループ化演算子です。

左辺式

左辺値は、代入の対象になります。

プロパティアクセス演算子
プロパティアクセス演算子はオブジェクトのプロパティやメソッドへのアクセスを提供します
(object.propertyobject["property"])。
new
new 演算子はコンストラクタのインスタンスを作成します。
new.target
コンストラクタ内で new.target を使うことで、new によって呼び出されるコンストラクタを参照できます。
super
super キーワードは親コンストラクタを呼び出します。
...obj
展開記法 (スプレッド記法) は、式を複数の引数または複数の要素に展開して、それぞれ関数呼び出しまたは配列リテラルに渡します。

インクリメントとデクリメント

接尾/接頭辞のインクリメント演算子と接尾/接頭辞のデクリメント演算子です。

A++
接尾辞インクリメント演算子。
A--
接尾辞デクリメント演算子。
++A
接頭辞インクリメント演算子。
--A
接頭辞デクリメント演算子。

単項演算子

単項演算は、1 個のオペランドによる演算です。

delete
delete 演算子は、オブジェクトからプロパティを削除します。
void
void 演算子は、式の戻り値を破棄します。
typeof
typeof 演算子は、与えられたオブジェクトの型を判別します。
+
単項正値演算子は、そのオペランドを Number 型に変換します。
-
単項負値演算子は、そのオペランドを Number 型に変換して正負を反転します。
~
ビット否定演算子です。
!
論理否定演算子です。

算術演算子

算術演算子は、数値 (リテラルまたは値) をオペランドとして取り、1 個の数値を返します。

+
加算演算子です。
-
減算演算子です。
/
除算演算子です。
*
乗算演算子です。
%
剰余演算子です。
**
べき乗演算子です。

関係演算子

比較演算子は、そのオペランドを比較し、その比較が真かどうかに基づいて Boolean 値を返します。

in
in 演算子は、与えられたプロパティをオブジェクトが持っているかどうかを判別します。
instanceof
instanceof 演算子は、オブジェクトが別のオブジェクトのインスタンスかどうかを判別します。
<
小なり演算子です。
>
大なり演算子です。
<=
以下演算子です。
>=
以上演算子です。

注記: => は演算子ではなく、アロー関数 のためのノーテーションです。

等値演算子

等値演算子の評価結果は常に、比較が真かどうかに基づいて Boolean 型の値になります。

==
等値演算子です。
!=
不等値演算子です。
===
同値演算子です。
!==
非同値演算子です。

ビットシフト演算子

オペランドのすべてのビットをシフト演算します。

<<
ビット左シフト演算子です。
>>
ビット右シフト演算子です。
>>>
ビット符号なし右シフト演算子です。

バイナリビット演算子

ビット演算子は、そのオペランドを 32 ビット (0 と 1) の並びとして扱い、標準の JavaScript 数値を返します。

&
ビット論理積 (AND) です。
|
ビット論理和 (OR) です。
^
ビット排他的論理和 (XOR) です。

バイナリ論理演算子

論理演算には、一般的に (論理) 真偽値が使用され、それが置かれた時に真偽値を返します。

&&
論理積 (AND) です。
||
論理和 (OR) です。

条件 (三項) 演算子

(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 Latest Draft (ECMA-262)
ECMAScript Language: Expressions の定義
ドラフト  

ブラウザ実装状況

機能ChromeEdgeFirefoxInternet ExplorerOperaSafari
Array comprehensions なし なし30 — 58 なし なし なし
async function expression55 ?52 なし4210.1
await55 あり52 ?4210.1
class42 あり45 なし あり あり
Comma operator あり あり13 あり あり
Conditional operator (c ? t : f) あり あり1 あり あり あり
delete あり あり1 あり あり あり
Destructuring assignment4914413 なし あり8
Expression closures なし なし3 — 60 なし なし なし
function あり あり1 あり あり あり
function* あり あり26 なし あり10
Generator comprehensions なし なし30 — 58 なし なし なし
Grouping operator () あり あり1 あり あり あり
in あり あり1 あり あり あり
instanceof あり あり1 あり あり あり
Legacy generator function なし なし2 — 58 なし なし なし
new あり あり1 あり あり あり
new.target46 あり41 なし あり あり
Object initializer1 あり11 あり1
Pipeline operator (|>) なし なし584 なし なし なし
Property accessors あり あり1 あり あり あり
super42 あり45 なし あり あり
this あり あり1 あり あり あり
typeof あり あり1 あり あり あり
void あり あり1 あり あり あり
yield39 あり265 なし あり10
yield* あり あり275 なし あり10
機能Android webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Array comprehensions なし なし なし30 — 58 なし なし なし
async function expression5555 ?524210.16.0
await5555 あり524210.16.0
class4242 あり45 あり あり4.0
Comma operator あり あり あり4 あり あり あり
Conditional operator (c ? t : f) あり あり あり4 あり あり あり
delete あり あり あり4 あり あり あり
Destructuring assignment494914413 あり85.0
Expression closures なし なし なし4 — 60 なし なし なし
function あり あり あり4 あり あり あり
function* あり あり あり26 あり10 あり
Generator comprehensions なし なし なし30 — 58 なし なし なし
Grouping operator () あり あり あり4 あり あり あり
in あり あり あり4 あり あり あり
instanceof あり あり あり4 あり あり あり
Legacy generator function なし なし なし4 — 58 なし なし なし
new あり あり あり4 あり あり あり
new.target4646 あり41 あり あり5.0
Object initializer118 あり4 あり1 あり
Pipeline operator (|>) なし なし なし584 なし なし なし
Property accessors あり あり あり4 あり あり あり
super4242 あり45 あり あり4.0
this あり あり あり4 あり あり あり
typeof あり あり あり4 あり あり あり
void あり あり あり4 あり あり あり
yield3939 あり265 あり104.0
yield* あり あり あり275 あり10 あり

1. From version 7.0.0: this feature is behind the --harmony runtime flag.

2. From version 5.0.0: this feature is behind the --harmony runtime flag.

3. Firefox provided a non-standard destructuring implementation from Firefox 2 to 40.

4. From version 58: this feature is behind the --enable-pipeline-operator compile flag.

5. Starting with Firefox 33, the parsing of the yield expression has been updated to conform with the ES2015 specification.

6. From version 0.12: this feature is behind the --harmony runtime flag.

関連項目

ドキュメントのタグと貢献者

タグ: 
このページの貢献者: Uemmra3, Marsf, x2357, teoli, ethertank, yyss, Potappo
最終更新者: Uemmra3,