カンマ演算子は、それぞれの演算対象を(左から右に)評価し、最後のオペランドの値を返します。

構文

expr1, expr2, expr3...

パラメータ

expr1, expr2, expr3...
任意の式です。

説明

単一の式でなければならない位置で複数の式を記述したい場合に、カンマ演算子を使うことができます。この演算子が最も良く使われるのは、for ループで複数のパラメータを与えたい時です。

例えば次のコードでは、a が、1 辺 10 要素からなる 2 次元配列内の要素を一度に 2 つ 変化させる為に、変数宣言部分でカンマ演算子を用いています。

このコードは、配列における対角線の要素の値を出力するものです。

for (var i = 0, j = 9; i <= 9; i++, j--)
  document.writeln("a[" + i + "][" + j + "] = " + a[i][j]);

var 文などで)代入​​​を行う際​​​にカンマを使うと、カンマ演算子が通常どおりに働いていないかのように見える場合があります(カンマ演算子が式の中にないため)。以下の例で a には b = 3 の値(すなわち 3 )が設定されますが、さらに c = 4 が評価されて、その結果 (4) がコンソールに返ります。これは演算子の優先順位と結合性のためです。

// 注記: 以下のコードはグローバル変数を生成するため、strict モードでは禁止されます。

a = b = 3, c = 4; // コンソールに 4 が返る
console.log(a); // 3 (もっとも左)

x = (y = 5, z = 6); // コンソールに 6 が返る
console.log(x); // 6 (もっとも右)

カンマ演算子は、配列・オブジェクト・関数の引数(パラメータ)の内部にあるカンマとは大きく異なります。

処理と戻り値

カンマ演算子が行うことのもうひとつの例が、値を返す前の処理です。前述のとおり最後の要素のみ返しますが、その他すべての要素も評価します。よって、以下のようなことができます:

function myFunc () {
  var x = 0;

  return (x += 1, x); // 戻り値は ++x と同じ
}

仕様

仕様書 策定状況 コメント
ECMAScript Latest Draft (ECMA-262)
Comma operator の定義
ドラフト  
ECMAScript 2015 (6th Edition, ECMA-262)
Comma operator の定義
標準  
ECMAScript 5.1 (ECMA-262)
Comma operator の定義
標準  
ECMAScript 1st Edition (ECMA-262)
Comma operator の定義
標準 最初期の定義

ブラウザー実装状況

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeEdge MobileAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
Comma operatorChrome 完全対応 ありEdge 完全対応 ありFirefox 完全対応 1IE 完全対応 3Opera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 4Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 ありnodejs 完全対応 あり

凡例

完全対応  
完全対応

関連情報

ドキュメントのタグと貢献者

このページの貢献者: mdnwebdocs-bot, segayuu, mushahiroyuki, yyss, teoli, ethertank, Potappo
最終更新者: mdnwebdocs-bot,