This article is in need of a technical review.
This article is in need of an editorial review.
この章では、JavaScript 言語のすべての演算子、式、キーワードについて文書化しています。
式と演算子(カテゴリ別)
アルファベット順リストは左側のサイドバーをご覧ください。
基本的な式
JavaScript の基本的なキーワードと一般的な式です。
thisthisキーワードは関数の実行コンテキストを参照します。functionfunctionキーワードは関数式を定義します。-
class classキーワードはクラス式を定義します。-
function* function*キーワードはジェネレータ関数式を定義します。-
yield - ジェネレータ関数の一時停止と再開を行います。
-
yield* - 別のジェネレータ関数または反復可能オブジェクトを代行します。
[]- 配列初期化子またはリテラル構文です。
{}- オブジェクト初期化子またはリテラル構文です。
/ab+c/i- 正規表現式のリテラル構文です。
-
[for (x of y) x] - 配列内包表記です。
-
(for (x of y) y) - ジェネレータ内包表記です。
( )- グループ化演算子です。
左辺式
左辺値は、代入の対象になります。
- プロパティアクセス演算子
- プロパティアクセス演算子はオブジェクトのプロパティやメソッドへのアクセスを提供します(
object.propertyやobject["property"]といった形で)。 newnew演算子はコンストラクタのインスタンスを作成します。- new.target
- コンストラクタ内で
new.targetを使うことで、newによって呼び出されるコンストラクタを参照できます。 -
super superキーワードは親コンストラクタを呼び出します。-
...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式を含めてください。- 式クロージャ
- 式クロージャ構文は、単純な関数を書くための省略記法です。
仕様
| 仕様 | 状況 | コメント |
|---|---|---|
| ECMAScript 1st Edition (ECMA-262) The definition of 'Expressions' in that specification. |
Standard | 初期定義。 |
| ECMAScript 5.1 (ECMA-262) The definition of 'Expressions' in that specification. |
Standard | |
| ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'ECMAScript Language: Expressions' in that specification. |
Standard | 新仕様: 展開演算子、分割代入、super キーワード、配列内包表記、ジェネレータ内包表記 |