JavaScriptを眺めていると、以下のようなコードに出くわすことがあります。
1,2,3,4,5;6,7,8;9
私はこれまで、文は;
で区切るものだと思っていたのですが、コンソールで動かしてみると、たしかに,
でも文を区切ることができるようです。
不思議なのは、同じソースのなかに、,
と;
が混在していることがあるということです。
この2つには何か違いがあるのでしょうか、どのような意図で、,
を選択することがあるのでしょうか。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
カンマ演算子
カンマ演算子(,
)を使う事で複数の式(Expression
)をまとめる事で、一つの式文(Expression statement
)として扱うことが出来ます。
式文は文(Statement
)に分類されます。
- 12.16 Comma Operator ( , ) - ECMAScript® 2016 Language Specification
- 13.5 Expression Statement - ECMAScript® 2016 Language Specification
省略記法
for
, while
, if
, 三項演算子、アロー関数等、一部の機能は、Stetament 内で一つの文(Statement
)が後続する事を求めます。
一般にブロック文(BlockStatement
)が使われる事が多いですが、文であれば何が入っても良い為、カンマ演算子で式文を指定する事も出来ます。
JavaScript
1if (x === 1) { // BlockStatement 2 a = 2; 3 b = 3; 4} 5 6if(x===1)a=2,b=3; // ExpressionStatement
人間が書く場合のコーディング規約では可読性の高い前者が推奨されますが、minified のような機械的処理の場合は、可読性を落としてでも、最短コードである事を優先する為、後者に変換されます。
変数文 (Variable Statement)
変数文におけるカンマ(,
)はカンマ演算子ではありません。
VariableStatement
の文法上でカンマ(,
)を含むことを許可しています。
Syntax VariableStatement[Yield]: varVariableDeclarationList[In, ?Yield]; VariableDeclarationList[In, Yield]: VariableDeclaration[?In, ?Yield] VariableDeclarationList[?In, ?Yield],VariableDeclaration[?In, ?Yield]
### セミコロン(`;`) `for` 文など、一部の例外はありますが、セミコロン(`;`)は原則として**文(Statement)**を区切る為に使われます。 カンマ演算子(`,`)は**式(Expression)**であり、式は式文(ExpressionStatement)の中に含むことが出来ます。 文(Statement)と式(Expression)は区別する必要があります。 Re: sannye さん
投稿2017/08/08 01:08
編集2017/08/08 01:51総合スコア18162
0
カンマ演算子でつないでいる箇所のことでしょうか。
【カンマ演算子 - JavaScript | MDN】
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Comma_Operator
投稿2017/08/07 18:21
総合スコア69400
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/08 00:25
0
MDNのカンマ演算子という箇所は読んだことがなかったので、勉強になりました。
しかし、次のようなコードがまかり通ると、私としては勘弁ならないなあとは思いました。
javascript
1//x = 10; 2x = 20; 3 4if (x === 10) 5 y = 20, console.log(y); 6else 7 y = 30, console.log(y);
投稿2017/08/07 18:54
総合スコア667
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/08 06:22