この章では、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 の定義
ドラフト  

ブラウザ実装状況

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeEdge MobileAndroid 版 FirefoxAndroid 版 OperaiOS 版 SafariSamsung InternetNode.js
Array comprehensions
非推奨非標準
Chrome 未対応 なしEdge 未対応 なしFirefox 未対応 30 — 58IE 未対応 なしOpera 未対応 なしSafari 未対応 なしWebView Android 未対応 なしChrome Android 未対応 なしEdge Mobile 未対応 なしFirefox Android 未対応 30 — 58Opera Android 未対応 なしSafari iOS 未対応 なしSamsung Internet Android 未対応 なしnodejs 未対応 なし
async function expressionChrome 完全対応 55Edge ? Firefox 完全対応 52IE 未対応 なしOpera 完全対応 42Safari 完全対応 10.1WebView Android 完全対応 55Chrome Android 完全対応 55Edge Mobile ? Firefox Android 完全対応 52Opera Android 完全対応 42Safari iOS 完全対応 10.1Samsung Internet Android 完全対応 6.0nodejs 完全対応 7.6.0
完全対応 7.6.0
完全対応 7.0.0
無効
無効 From version 7.0.0: this feature is behind the --harmony runtime flag.
awaitChrome 完全対応 55Edge 完全対応 ありFirefox 完全対応 52IE ? Opera 完全対応 42Safari 完全対応 10.1WebView Android 完全対応 55Chrome Android 完全対応 55Edge Mobile 完全対応 ありFirefox Android 完全対応 52Opera Android 完全対応 42Safari iOS 完全対応 10.1Samsung Internet Android 完全対応 6.0nodejs 完全対応 7.6.0
完全対応 7.6.0
完全対応 7.0.0
無効
無効 From version 7.0.0: this feature is behind the --harmony runtime flag.
classChrome 完全対応 42Edge 完全対応 ありFirefox 完全対応 45IE 未対応 なしOpera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 42Chrome Android 完全対応 42Edge Mobile 完全対応 ありFirefox Android 完全対応 45Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 4.0nodejs 完全対応 6.0.0
完全対応 6.0.0
完全対応 5.0.0
無効
無効 From version 5.0.0: this feature is behind the --harmony runtime flag.
Comma operatorChrome 完全対応 ありEdge 完全対応 ありFirefox 完全対応 1IE 完全対応 3Opera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 4Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 ありnodejs 完全対応 あり
Conditional operator (c ? t : f)Chrome 完全対応 ありEdge 完全対応 ありFirefox 完全対応 1IE 完全対応 ありOpera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 4Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 ありnodejs 完全対応 あり
deleteChrome 完全対応 ありEdge 完全対応 ありFirefox 完全対応 1IE 完全対応 ありOpera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 4Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 ありnodejs 完全対応 あり
Destructuring assignmentChrome 完全対応 49Edge 完全対応 14Firefox 完全対応 41
補足
完全対応 41
補足
補足 Firefox provided a non-standard destructuring implementation from Firefox 2 to 40.
IE 未対応 なしOpera 完全対応 ありSafari 完全対応 8WebView Android 完全対応 49Chrome Android 完全対応 49Edge Mobile 完全対応 14Firefox Android 完全対応 41
補足
完全対応 41
補足
補足 Firefox provided a non-standard destructuring implementation from Firefox 2 to 40.
Opera Android 完全対応 ありSafari iOS 完全対応 8Samsung Internet Android 完全対応 5.0nodejs 完全対応 6.0.0
Expression closures
非推奨非標準
Chrome 未対応 なしEdge 未対応 なしFirefox 未対応 3 — 60IE 未対応 なしOpera 未対応 なしSafari 未対応 なしWebView Android 未対応 なしChrome Android 未対応 なしEdge Mobile 未対応 なしFirefox Android 未対応 4 — 60Opera Android 未対応 なしSafari iOS 未対応 なしSamsung Internet Android 未対応 なしnodejs 未対応 なし
functionChrome 完全対応 ありEdge 完全対応 ありFirefox 完全対応 1IE 完全対応 ありOpera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 4Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 ありnodejs 完全対応 あり
function*Chrome 完全対応 ありEdge 完全対応 ありFirefox 完全対応 26IE 未対応 なしOpera 完全対応 ありSafari 完全対応 10WebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 26Opera Android 完全対応 ありSafari iOS 完全対応 10Samsung Internet Android 完全対応 ありnodejs 完全対応 あり
Generator comprehensions
非推奨非標準
Chrome 未対応 なしEdge 未対応 なしFirefox 未対応 30 — 58IE 未対応 なしOpera 未対応 なしSafari 未対応 なしWebView Android 未対応 なしChrome Android 未対応 なしEdge Mobile 未対応 なしFirefox Android 未対応 30 — 58Opera Android 未対応 なしSafari iOS 未対応 なしSamsung Internet Android 未対応 なしnodejs 未対応 なし
Grouping operator ()Chrome 完全対応 ありEdge 完全対応 ありFirefox 完全対応 1IE 完全対応 ありOpera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 4Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 ありnodejs 完全対応 あり
inChrome 完全対応 ありEdge 完全対応 ありFirefox 完全対応 1IE 完全対応 ありOpera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 4Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 ありnodejs 完全対応 あり
instanceofChrome 完全対応 ありEdge 完全対応 ありFirefox 完全対応 1IE 完全対応 ありOpera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 4Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 ありnodejs 完全対応 あり
Legacy generator function
非推奨非標準
Chrome 未対応 なしEdge 未対応 なしFirefox 未対応 2 — 58IE 未対応 なしOpera 未対応 なしSafari 未対応 なしWebView Android 未対応 なしChrome Android 未対応 なしEdge Mobile 未対応 なしFirefox Android 未対応 4 — 58Opera Android 未対応 なしSafari iOS 未対応 なしSamsung Internet Android 未対応 なしnodejs 未対応 なし
newChrome 完全対応 ありEdge 完全対応 ありFirefox 完全対応 1IE 完全対応 ありOpera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 4Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 ありnodejs 完全対応 あり
new.targetChrome 完全対応 46Edge 完全対応 ありFirefox 完全対応 41IE 未対応 なしOpera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 46Chrome Android 完全対応 46Edge Mobile 完全対応 ありFirefox Android 完全対応 41Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 5.0nodejs 完全対応 5.0.0
Object initializerChrome 完全対応 1Edge 完全対応 ありFirefox 完全対応 1IE 完全対応 1Opera 完全対応 ありSafari 完全対応 1WebView Android 完全対応 1Chrome Android 完全対応 18Edge Mobile 完全対応 ありFirefox Android 完全対応 4Opera Android 完全対応 ありSafari iOS 完全対応 1Samsung Internet Android 完全対応 ありnodejs 完全対応 あり
Pipeline operator (|>)
実験的
Chrome 未対応 なしEdge 未対応 なしFirefox 完全対応 58
無効
完全対応 58
無効
無効 From version 58: this feature is behind the --enable-pipeline-operator compile flag.
IE 未対応 なしOpera 未対応 なしSafari 未対応 なしWebView Android 未対応 なしChrome Android 未対応 なしEdge Mobile 未対応 なしFirefox Android 完全対応 58
無効
完全対応 58
無効
無効 From version 58: this feature is behind the --enable-pipeline-operator compile flag.
Opera Android 未対応 なしSafari iOS 未対応 なしSamsung Internet Android 未対応 なしnodejs 未対応 なし
Property accessorsChrome 完全対応 ありEdge 完全対応 ありFirefox 完全対応 1IE 完全対応 ありOpera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 4Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 ありnodejs 完全対応 あり
superChrome 完全対応 42Edge 完全対応 ありFirefox 完全対応 45IE 未対応 なしOpera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 42Chrome Android 完全対応 42Edge Mobile 完全対応 ありFirefox Android 完全対応 45Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 4.0nodejs 完全対応 あり
thisChrome 完全対応 ありEdge 完全対応 ありFirefox 完全対応 1IE 完全対応 ありOpera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 4Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 ありnodejs 完全対応 あり
typeofChrome 完全対応 ありEdge 完全対応 ありFirefox 完全対応 1IE 完全対応 ありOpera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 4Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 ありnodejs 完全対応 あり
voidChrome 完全対応 ありEdge 完全対応 ありFirefox 完全対応 1IE 完全対応 ありOpera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 4Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 ありnodejs 完全対応 あり
yieldChrome 完全対応 39Edge 完全対応 ありFirefox 完全対応 26
補足
完全対応 26
補足
補足 Starting with Firefox 33, the parsing of the yield expression has been updated to conform with the ES2015 specification.
IE 未対応 なしOpera 完全対応 ありSafari 完全対応 10WebView Android 完全対応 39Chrome Android 完全対応 39Edge Mobile 完全対応 ありFirefox Android 完全対応 26
補足
完全対応 26
補足
補足 Starting with Firefox 33, the parsing of the yield expression has been updated to conform with the ES2015 specification.
Opera Android 完全対応 ありSafari iOS 完全対応 10Samsung Internet Android 完全対応 4.0nodejs 完全対応 4.0.0
完全対応 4.0.0
完全対応 0.12
無効
無効 From version 0.12: this feature is behind the --harmony runtime flag.
yield*Chrome 完全対応 ありEdge 完全対応 ありFirefox 完全対応 27
補足
完全対応 27
補足
補足 Starting with Firefox 33, the parsing of the yield expression has been updated to conform with the ES2015 specification.
IE 未対応 なしOpera 完全対応 ありSafari 完全対応 10WebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 27
補足
完全対応 27
補足
補足 Starting with Firefox 33, the parsing of the yield expression has been updated to conform with the ES2015 specification.
Opera Android 完全対応 ありSafari iOS 完全対応 10Samsung Internet Android 完全対応 ありnodejs 完全対応 4.0.0
完全対応 4.0.0
完全対応 0.12
無効
無効 From version 0.12: this feature is behind the --harmony runtime flag.

凡例

完全対応  
完全対応
未対応  
未対応
実装状況不明  
実装状況不明
実験的。動作が変更される可能性があります。
実験的。動作が変更される可能性があります。
非標準。ブラウザー間の互換性が低い可能性があります。
非標準。ブラウザー間の互換性が低い可能性があります。
非推奨。新しいウェブサイトでは使用しないでください。
非推奨。新しいウェブサイトでは使用しないでください。
実装ノートを参照してください。
実装ノートを参照してください。
ユーザーが明示的にこの機能を有効にしなければなりません。
ユーザーが明示的にこの機能を有効にしなければなりません。

関連項目

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

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