この章では、JavaScript 言語のすべての演算子、式、キーワードについて文書化しています。
式と演算子 (カテゴリ別)
アルファベット順リストは左側のサイドバーをご覧ください。
基本式
JavaScript の基本的なキーワードと一般的な式です。
this
this
キーワードは関数の実行コンテキストを参照します。function
function
キーワードは関数式を定義します。class
class
キーワードはクラス式を定義します。function*
function*
キーワードはジェネレータ関数式を定義します。yield
- ジェネレータ関数の一時停止と再開を行います。
yield*
- 別のジェネレータ関数または反復可能オブジェクトを代行します。
[]
- 配列初期化子またはリテラル構文です。
{}
- オブジェクト初期化子またはリテラル構文です。
/ab+c/i
- 正規表現式のリテラル構文です。
( )
- グループ化演算子です。
左辺式
左辺値は、代入の対象になります。
- プロパティアクセス演算子
- プロパティアクセス演算子はオブジェクトのプロパティやメソッドへのアクセスを提供します
(object.property
やobject["property"]
)。 new
new
演算子はコンストラクタのインスタンスを作成します。- new.target
- コンストラクタ内で
new.target
を使うことで、new
によって呼び出されるコンストラクタを参照できます。 super
super
キーワードは親コンストラクタを呼び出します。...obj
- 展開演算子 (スプレッド演算子) は、式を複数の引数または複数の要素に展開して、それぞれ関数呼び出しまたは配列リテラルに渡します。
インクリメントとデクリメント
接尾/接頭辞のインクリメント演算子と接尾/接頭辞のデクリメント演算子です。
単項演算子
単項演算は、1 個のオペランドによる演算です。
delete
delete
演算子は、オブジェクトからプロパティを削除します。void
void
演算子は、式の戻り値を破棄します。typeof
typeof
演算子は、与えられたオブジェクトの型を判別します。+
- 単項正値演算子は、そのオペランドを Number 型に変換します。
-
- 単項負値演算子は、そのオペランドを Number 型に変換して正負を反転します。
~
- ビット否定演算子です。
!
- 論理否定演算子です。
算術演算子
算術演算子は、数値 (リテラルまたは値) をオペランドとして取り、1 個の数値を返します。
-
**
- べき乗演算子です。
関係演算子
比較演算子は、そのオペランドを比較し、その比較が真かどうかに基づいて Boolean
値を返します。
in
in
演算子は、与えられたプロパティをオブジェクトが持っているかどうかを判別します。instanceof
instanceof
演算子は、オブジェクトが別のオブジェクトのインスタンスかどうかを判別します。<
- 小なり演算子です。
>
- 大なり演算子です。
<=
- 以下演算子です。
>=
- 以上演算子です。
注記: => は演算子ではなく、アロー関数 のためのノーテーションです。
等値演算子
等値演算子の評価結果は常に、比較が真かどうかに基づいて 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 2017 Draft (ECMA-262) ECMAScript Language: Expressions の定義 |
ドラフト |