式と演算子

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

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

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

基本式

JavaScript での基本的なキーワードと一般的な式です。これらの式は最も高い優先順位を持ちます(演算子よりも高い)。

this

this キーワードは関数の実行コンテキストを示す特別なプロパティです。

リテラル

基本的な null、論理値、数値、文字列のリテラルです。

[]

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

{}

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

function

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

class

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

function*

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

async function

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

async function*

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

/ab+c/i

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

`string`

テンプレートリテラル構文です。

( )

グループ化演算子です。

左辺式

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

プロパティアクセサー

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

?.

オプショナルチェーン演算子は、参照が nullishnull または undefined)であった場合にエラーを発生させる代わりに undefined を返します。

new

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

new.target

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

import.meta

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

super

superキーワードは親オブジェクトのコンストラクタを呼び出したり、親オブジェクトのプロパティにアクセスしたりすることができます。

import()

import() 構文を使うと、モジュールを非同期かつ動的に、潜在的にモジュールでない環境に読み込むことができます。

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

後置/前置のインクリメント演算子と後置/前置のデクリメント演算子です。

A++

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

A--

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

++A

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

--A

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

単項演算子

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

delete

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

void

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

typeof

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

+

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

-

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

~

ビット否定演算子です。

!

論理否定演算子です。

await

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

算術演算子

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

**

べき乗演算子です。

*

乗算演算子です。

/

除算演算子です。

%

剰余演算子です。

+ (プラス)

加算演算子です。

-

減算演算子です。

関係演算子

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

< (Less than)

小なり演算子です。

> (Greater than)

大なり演算子です。

<=

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

>=

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

instanceof

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

in

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

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

等値演算子

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

==

等値演算子です。

!=

不等値演算子です。

===

同値演算子です。

!==

非同値演算子です。

ビットシフト演算子

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

<<

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

>>

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

>>>

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

バイナリービット演算子

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

&

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

|

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

^

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

バイナリー論理演算子

論理演算子は論理値(ブール値)において実装され、短絡評価があります。

&&

論理積 (AND) です。

||

論理和 (OR) です。

??

Null 合体演算子です。

条件(三項)演算子

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

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

代入演算子

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

=

代入演算子です。

*=

乗算値を代入します。

/=

除算値を代入します。

%=

剰余値を代入します。

+=

加算値を代入します。

-=

減算値を代入します。

<<=

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

>>=

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

>>>=

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

&=

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

^=

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

|=

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

**=

べき乗値を代入します。

&&=

論理積代入です。

||=

論理和代入です。

??=

論理 Null 合体代入です。

[a, b] = arr, { a, b } = obj

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

yield 演算子

yield

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

yield*

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

スプレッド構文

...obj

スプレッド構文を使用すると、配列や文字列などの反復可能オブジェクトを、 0 個以上の引数(関数呼び出しの場合)や要素(配列リテラルの場合)が予想される配置で展開することができます。オブジェクトリテラルでは、スプレッド構文はオブジェクトのプロパティを列挙し、作成するオブジェクトにキーと値のペアを追加します。

カンマ演算子

,

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

仕様書

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

ブラウザーの互換性

BCD tables only load in the browser

関連情報