JavaScript
1 var o = {x:1, y:2, z:3}; 2 var a = [], i = 0; 3 for(a[i++] in o)//here 4 document.write(a);
このコードの//hereの代わりに;を入れるとなぜ値がかわるのでしょうか?
詳しく教えていただけたら嬉しいです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
for文で繰り返す内容は、基本的には{}で囲いますが、
1行だけであれば省略できます。
つまり、
JavaScript
1 for(a[i++] in o)//here 2 document.write(a);
というのは
JavaScript
1 for(a[i++] in o){ 2 document.write(a); 3 }
の括弧の省略された形です。
//hereを;に変えると、意味が変わり、下記のような意味になります。
JavaScript
1 for(a[i++] in o){ 2 //処理なしのfor文 3 } 4 document.write(a);
投稿2015/11/02 07:09
総合スコア1507
0
ベストアンサー
「//here」後ろに改行がありますが、それが有ってもjavascriptの動作には影響しません。
逆に「;」が入るとそこでそのコマンドの終了を意味します。
前者はこれと同じで
javascript
1for(a[i++] in o){ 2 document.write(a); 3}
※初回に"x"、次に"x,y"、最後に"x,y,z"が出力されて、"xx,yx,y,z"
後者はこれと同じです。
javascript
1for(a[i++] in o){} 2document.write(a);
※完成したaが一度だけ出力されて "x,y,x"
投稿2015/11/02 07:07
編集2015/11/02 09:23総合スコア2068
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/11/02 07:50 編集
2015/11/02 07:57
退会済みユーザー
2015/11/02 08:46
2015/11/02 08:59
退会済みユーザー
2015/11/02 09:10
2015/11/02 09:24 編集
退会済みユーザー
2015/11/02 11:09
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。