1. ホーム
  2. javascript

[解決済み] カンマを使った割り付けは有効か?

2022-11-16 15:14:44

質問

なぜ aaa = 1,2,3 が動作し、その値を aaa1 ?

なぜ var bbb = 1,2,3 は機能しないのでしょうか?

なぜ var bbb = (1,2,3) が動作し、その値を bbb3 ?

<イグ

どのように解決するのですか?

いろいろとありますが、基本的には カンマ演算子 .

カンマ演算子は、オペランドの両方(左から右へ)を評価し、2番目のオペランドの値を返します。


このコードは

aaa = 1,2,3

と同等である。

aaa = 1;
2;
3;

そこで aaa は暗黙のうちに宣言され、値として1が割り当てられています。 コンソールの出力は最後の文の結果である3であることに注意してください。


このコードは

var bbb = 1,2,3

は構文エラーです。なぜなら、変数宣言のカンマは、1行で複数の変数を宣言するために使われるからです。MDN の記事で指摘されているように

のカンマに注意してください。 var 文は ではない というのは、カンマ演算子は式の中には存在しないからです。むしろ、それは特殊文字で var 文の中で、複数の文をひとつにまとめるための特別な文字です。

ということで、このコードはだいたいこんな感じです。

var bbb = 1;
var 2;
var 3;

もちろん 2 は有効な識別子ではないので、その時点で失敗します。


このコードは

var bbb = (1,2,3)

は最初のものと非常によく似ていますが、数値が括弧でくくられるため、最初に評価されます。つまり、これはおおまかに言って

1;
2;
var bbb = 3;