式と演算子

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

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
Addition (+)
Addition assignment (x += y)
Assignment (x = y)
async function expression
async function* expression
await
Use at module top level
Bitwise AND (a & b)
Bitwise AND assignment (x &= y)
Bitwise NOT (~a)
Bitwise OR (a | b)
Bitwise OR assignment (x |= y)
Bitwise XOR (a ^ b)
Bitwise XOR assignment (x ^= y)
class
Comma operator
Conditional operator (c ? t : f)
Decrement (--)
delete
Destructuring assignment
Computed property names
Rest in arrays
Rest in objects
Division (/)
Division assignment (x /= y)
Equality (a == b)
Exponentiation (**)
Exponentiation assignment (x **= y)
function expression
Trailing comma in parameters
function* expression
Trailing comma in parameters
Greater than (a > b)
Greater than or equal (a >= b)
Grouping operator ()
import
The options parameter
Non-standard
Available in workers
import.meta
import.meta.resolve
in
Increment (++)
Inequality (a != b)
instanceof
Bitwise left shift (a << b)
Left shift assignment (x <<= y)
Less than (a < b)
Less than or equal (a <= b)
Logical AND (&&)
Logical AND assignment (x &&= y)
Logical NOT (!)
Logical OR (||)
Logical OR assignment (x ||= y)
Multiplication (*)
Multiplication assignment (x *= y)
new
new.target
null
Nullish coalescing operator (??)
Nullish coalescing assignment (x ??= y)
Object initializer
Computed property names
Shorthand method names
Shorthand property names
Spread properties
Optional chaining operator (?.)
Property accessors
Remainder (%)
Remainder assignment (x %= y)
Bitwise right shift (a >> b)
Right shift assignment (x >>= y)
Spread syntax (...)
Spread in array literals
Spread in function calls
Spread in object literals
Strict equality (a === b)
Strict inequality (a !== b)
Subtraction (-)
Subtraction assignment (x -= y)
super
this
typeof
Unary negation (-)
Unary plus (+)
Bitwise unsigned right shift (a >>> b)
Unsigned right shift assignment (x >>>= y)
void
yield
yield*

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Partial support
Partial support
No support
No support
Non-standard. Check cross-browser support before using.
See implementation notes.
Has more compatibility info.

関連情報