質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

9109閲覧

javascriptのカンマとセミコロンについて

recal

総合スコア1126

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2016/12/08 15:58

,(カンマ)で区切っても;(セミコロン)で区切っても意味は同じなんでしょうか?

JavaScript

1window.onload=function(){ 2 function hoge(){ 3 a=1,b=2+a; 4 alert(a+b); 5 } 6 7 function fuga(){ 8 a=4; 9 b=2+a; 10 alert(a+b); 11 } 12 13 hoge(); 14 fuga(); 15}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

上げておられる例では実質的には同じだと思います。

カンマ演算子は左側の式を評価した後に右側の式を評価し、右側の式の評価結果を結果とするという演算子ですが、代入演算子よりも優先度が低いので(質問の例に限れば)以下のように等価と考えても差し支えないと思います。

a = 1, b = 2 + a; -> (a = 1), (b = 2 + a); -> a = 1; b = 2 + a;

個人的にはカンマ演算子を使う明確な目的(単一の式しか書けない場所で副作用を目的としてカンマ演算子を使う)がないならセミコロンを使ったほうが分かりやすい気がします。乱用すると分かりにくくなるとも思います。


追記:Javascriptに出現する全てのカンマがカンマ演算子を意味するわけではないのでその点も注意が必要です。例えば関数の引数の区切りに使うカンマは「カンマ演算子」ではありませんので・・・

投稿2016/12/08 16:45

編集2016/12/08 17:20
KSwordOfHaste

総合スコア18394

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

recal

2016/12/08 17:07

>カンマ演算子は左側の式を評価した後に右側の式を評価し、右側の式の評価結果を結果とするという演算子 そうだったんですね! ありがとうございます。
guest

0

ベストアンサー

意味は違います。実行結果については、お書きの例だと同じです。
;は文の区切りです。
,は演算子で、+*などの仲間です。x+yが「xとyの和(xとyが数値の場合)」という結果になるのに対して、x,yyが結果の値となります。xは結果に無関係です。

あまり使われる演算子では無いですが、見かけるとすれば、

JavaScript

1for(var i=1,j=10; i<j; i++,j--) {

のような例でしょうか。i++,j--の所がそうです。ただ、この場合は演算結果であるj--の値すら使わずに捨てていますね。
i=1,j=10のカンマは演算子では無いです。後は関数呼び出しの引数の区切りのカンマも演算子では無いです。このようにカンマはいろいろな意味を持つので、初心者の内は自分からはカンマ演算子を使わない方が紛れが無くていいでしょう。

あと、JavaScriptだとまず無いと思いますが、他の言語で見ないことも無いのは、

JavaScript

1while(処理1, 処理2, 条件) { 2 処理3; 3 処理4; 4}

というような、カンマ演算子の結果を使うケースですが、これは

JavaScript

1処理1; 2処理2; 3while(条件){ 4 処理3; 5 処理4; 6 処理1; 7 処理2; 8} 9もしくは、 10while(true){ 11 処理1; 12 処理2; 13 if(!条件) break; 14 処理3; 15 処理4; 16}

のように、カンマ演算子を避けるのが多いようです。

投稿2016/12/08 17:24

otn

総合スコア84503

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問