式と演算子

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

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

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

基本式

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

this
this キーワードは関数の実行コンテキストを参照します。
function
function キーワードは関数式を定義します。
class
class キーワードはクラス式を定義します。
function*
function* キーワードはジェネレータ関数式を定義します。
yield
ジェネレータ関数の一時停止と再開を行います。
yield*
別のジェネレータ関数または反復可能オブジェクトを代行します。
[]
配列初期化子またはリテラル構文です。
{}
オブジェクト初期化子またはリテラル構文です。
/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 2017 Draft (ECMA-262)
ECMAScript Language: Expressions の定義
ドラフト

関連項目

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

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