JavaScriptにおける「カンマ演算子」の定義を教えてください
・下記はそれぞれ「カンマ演算子」に該当?
JavaScript
1var hoge1,hoge2,hoge3;
JavaScript
1var a; 2a >= 1 && (o = "hoge"), a > 1 && (a -= 1);
・左に「=」が付与されていないものは「カンマ演算子」ではない、という見分け方でOK?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
var 宣言の中で括弧に囲まれずに出現するカンマは、「制約付きカンマ演算子」とでも呼ばれるような、特別な記号というのが正しいような気がします。例えば・・・
JavaScript
1var a = (0, 1, 2);
上記のカンマは通常の(制約を受けない)カンマ演算子ですが・・・
JavaScript
1var a = 0, 1, 2;
上記の場合、もしこれらが通常のカンマ演算子であるならば、上記の1、2は単なる数値リテラル(正当なexpression)として左から右へ順番に評価されるだけのはずです。
しかし、実際には上記の宣言は、1の部分でJavaScript構文エラー(var 宣言文には変数名のみ、または変数名=初期値の形式だけが許されていて、単独での関数呼び出しやリテラル値のみの記述は許されない)になります。つまり、これらのカンマ演算子は通常(var宣言の外)の場合と異なり、記述できるexpressionに制約がある、ということです。
このような制約は var 宣言中のみの話なので、下記はすべて通常のカンマ演算子となります。
JavaScript
1var a; 2a = 0, 1 , (2, 3, 4), 5;
カンマ演算子は代入演算子よりも優先度が高いため、上記は下記の4つのステートメントとして個別に評価されます。
- a = 0
- 1
- (2, 3, 4)
- 5
だから何だと言われてしまいそうな話ですが、何となくモヤっとしたので書かせていただきました。
投稿2016/02/29 05:41
総合スコア2425
0
Note that the comma in assignments such as the var statement are not comma operators, because they don't exist within an expression.
Comma operator - JavaScript | MDN
雑な訳をしますと、「var宣言文はカンマ演算子ではありません。なぜなら式が含まれていないからです」ということです。
#####追記
左に「=」が付与されていないものは「カンマ演算子」ではない、という見分け方でOK?
NOではないかと。
javascript
11, 2;
はカンマ演算子では。
#####さらに追記
定義も見てみましたので再追記。ECMAですが。
11.14 Comma Operator ( , )
Syntax
Expression :
AssignmentExpression
Expression , AssignmentExpression
ExpressionNoIn :
AssignmentExpressionNoIn
ExpressionNoIn , AssignmentExpressionNoIn
ECMAScript Language Specification - ECMA-262 Edition 5.1
AssignmentExpression
は定義を追っていくとPrimaryExpression
までさかのぼります。
投稿2016/02/29 03:48
編集2016/02/29 05:30総合スコア35871
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
下記のカンマは、どちらも「カンマ演算子」だと思います。
JavaScript
1var hoge1, hoge2, hoge3; 2 3var hoge1 = 'a', hoge2 = 'b', hoge3 = 'c';
投稿2016/02/29 03:22
総合スコア2092
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/02/29 06:05
2016/02/29 06:25
2016/02/29 08:46
2016/02/29 10:19
2016/03/01 02:27
2016/03/01 02:34