式と演算子

この節では、JavaScript 言語のすべての演算子、式、キーワードについて記述しています。

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

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

基本式

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

this

this キーワードは関数の実行コンテキストを参照します。

function

function キーワードは関数式を定義します。

class

class キーワードはクラス式を定義します。

function*

function* キーワードはジェネレーター関数式を定義します。

yield

ジェネレーター関数の一時停止と再開を行います。

yield*

別のジェネレーター関数または反復可能オブジェクトを代行します。

async function

async function は非同期の関数式を定義します。

await

非同期関数式の停止/再開と、プロミスの解決/拒否を待ちます。

[]

配列初期化子またはリテラル構文です。

{}

オブジェクト初期化子またはリテラル構文です。

/ab+c/i

正規表現式のリテラル構文です。

( )

グループ化演算子です。

左辺式

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

プロパティアクセサー

プロパティアクセス演算子はオブジェクトのプロパティやメソッドへのアクセス (object.propertyobject["property"]) を提供します。

new

new 演算子はコンストラクターのインスタンスを作成します。

new.target

コンストラクター内で new.target を使うことで、new によって呼び出されるコンストラクターを参照できます。

import.meta

コンテキストに依存したメタデータを JavaScript モジュールへ公開するオブジェクトです。

super

super キーワードは親コンストラクターを呼び出します。

...obj

展開記法 (スプレッド記法) は、式を複数の引数または複数の要素に展開して、それぞれ関数呼び出しまたは配列リテラルに渡します。

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

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

A++

後置型インクリメント演算子。

A--

後置型デクリメント演算子。

++A

前置型インクリメント演算子。

--A

前置型デクリメント演算子。

単項演算子

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

delete

delete 演算子は、オブジェクトからプロパティを削除します。

void

void 演算子は、式の戻り値を破棄します。

typeof

typeof 演算子は、与えられたオブジェクトの型を判別します。

+

単項正値演算子は、そのオペランドを Number 型に変換します。

-

単項負値演算子は、そのオペランドを Number 型に変換して正負を反転します。

~

ビット否定演算子です。

!

論理否定演算子です。

算術演算子

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

+

加算演算子です。

-

減算演算子です。

/

除算演算子です。

*

乗算演算子です。

%

剰余演算子です。

**

べき乗演算子です。

関係演算子

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

in

in 演算子は、与えられたプロパティをオブジェクトが持っているかどうかを判別します。

instanceof

instanceof 演算子は、オブジェクトが別のオブジェクトのインスタンスかどうかを判別します。

<

小なり演算子です。

>

大なり演算子です。

<=

小なりイコール演算子です。

>=

大なりイコール演算子です。

Note: => は演算子ではなく、アロー関数のための記法です。

等値演算子

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

==

等値演算子です。

!=

不等値演算子です。

===

同値演算子です。

!==

非同値演算子です。

ビットシフト演算子

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

<<

ビット左シフト演算子です。

>>

ビット右シフト演算子です。

>>>

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

バイナリービット演算子

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

&

ビット論理積 (AND) です。

|

ビット論理和 (OR) です。

^

ビット排他的論理和 (XOR) です。

バイナリー論理演算子

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

&&

論理積 (AND) です。

||

論理和 (OR) です。

??

Null 合体演算子です。

条件 (三項) 演算子

(条件 ? 真の場合 : 負の場合)

この条件演算子は、条件の論理値を基に、2 つの値のいずれか一方を返します。

オプショナルチェーン演算子

?.

オプショナルチェーン演算子は、参照が nullish (null または undefined) の場合にエラーを発生させるのではなく、undefined を返します。

代入演算子

代入演算子は、右辺のオペランドに基づいて、値を左辺のオペランドに代入します。

=

代入演算子です。

*=

乗算値を代入します。

**=

べき乗値を代入します。

/=

除算値を代入します。

%=

剰余値を代入します。

+=

加算値を代入します。

-=

減算値を代入します。

<<=

左シフトした値を代入します。

>>=

右シフトした値を代入します。

>>>=

符号なしの右シフトした値を代入します。

&=

ビット論理積 (AND) の値を代入します。

^=

ビット排他的論理和 (XOR) の値を代入します。

|=

ビット論理和 (OR) の値を代入します。

&&=

論理積代入です。

||=

論理和代入です。

??=

論理 Null 代入です。

[a, b] = [1, 2] {a, b} = {a:1, b:2}

分割代入は、配列やオブジェクトのプロパティを、配列やオブジェクトリテラルに似た構文を使用して変数に代入します。

カンマ演算子

,

カンマ演算子は、複数の式を単一の文で評価し、その最後の式の結果を返します。

仕様書

Specification
ECMAScript Language Specification
# sec-addition-operator-plus
ECMAScript Language Specification
# sec-assignment-operators
ECMAScript Language Specification
# sec-async-function-definitions
ECMAScript Language Specification
# sec-async-generator-function-definitions
ECMAScript Language Specification
# prod-BitwiseANDExpression
ECMAScript Language Specification
# sec-bitwise-not-operator
ECMAScript Language Specification
# prod-BitwiseORExpression
ECMAScript Language Specification
# prod-BitwiseXORExpression
ECMAScript Language Specification
# sec-class-definitions
ECMAScript Language Specification
# sec-comma-operator
ECMAScript Language Specification
# sec-conditional-operator
ECMAScript Language Specification
# sec-postfix-decrement-operator
ECMAScript Language Specification
# sec-delete-operator
ECMAScript Language Specification
# sec-destructuring-assignment
ECMAScript Language Specification
# sec-destructuring-binding-patterns
ECMAScript Language Specification
# sec-multiplicative-operators
ECMAScript Language Specification
# sec-equality-operators
ECMAScript Language Specification
# sec-exp-operator
ECMAScript Language Specification
# sec-function-definitions
ECMAScript Language Specification
# sec-generator-function-definitions
ECMAScript Language Specification
# sec-relational-operators
ECMAScript Language Specification
# sec-grouping-operator
ECMAScript Language Specification
# sec-import-calls
ECMAScript Language Specification
# prod-ImportMeta
HTML Standard
# hostgetimportmetaproperties
ECMAScript Language Specification
# sec-postfix-increment-operator
ECMAScript Language Specification
# sec-left-shift-operator
ECMAScript Language Specification
# prod-LogicalANDExpression
ECMAScript Language Specification
# sec-logical-not-operator
ECMAScript Language Specification
# prod-LogicalORExpression
ECMAScript Language Specification
# sec-new-operator
ECMAScript Language Specification
# sec-built-in-function-objects
ECMAScript Language Specification
# sec-null-value
ECMAScript Language Specification
# prod-CoalesceExpression
ECMAScript Language Specification
# sec-object-initializer
ECMAScript Language Specification
# prod-OptionalExpression
ECMAScript Language Specification
# sec-property-accessors
ECMAScript Language Specification
# sec-signed-right-shift-operator
ECMAScript Language Specification
# prod-SpreadElement
ECMAScript Language Specification
# prod-ArgumentList
ECMAScript Language Specification
# prod-PropertyDefinition
ECMAScript Language Specification
# sec-subtraction-operator-minus
ECMAScript Language Specification
# sec-super-keyword
ECMAScript Language Specification
# sec-this-keyword
ECMAScript Language Specification
# sec-typeof-operator
ECMAScript Language Specification
# sec-unary-minus-operator
ECMAScript Language Specification
# sec-unary-plus-operator
ECMAScript Language Specification
# sec-unsigned-right-shift-operator
ECMAScript Language Specification
# sec-void-operator
ECMAScript Language Specification
# prod-YieldExpression
ECMAScript Language Specification
# sec-generator-function-definitions-runtime-semantics-evaluation

ブラウザーの互換性

BCD tables only load in the browser

関連情報