匿名質問者

javascriptのfor文でどうしても理解できないところがあります。


var s = new String(1234567);
var ret = '';
for(var i = s.length-3; i>0; i-=3){
ret = ',' + s.substr(i,3) + ret;
}
ret = s.substr(0, i+3) +ret;
document.write('合計金額は、' + ret + ’ 円です<br>');

これは3行ごとにカンマを入れるプログラムらしいのですが、
僕がわからないのはforの部分です。

初期値は7-3で4になりますよね。それでiが1以上だったら終了して、1回まわるごとにiを-3していくプログラムだと思っているのですが、1週目でいきなり終了条件を満たしているので、結果は1,234,567になるらしいのですが、そうなるとは僕には思えません。

わかりやすく解説できる方いましたらお願いします!

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/11/15 14:22:26

ベストアンサー

匿名回答1号 No.1

それでiが1以上だったら終了して、

ここが違う。
「i が 1以上の間は続けて」だ。
終了条件ではない。継続条件だ。

匿名質問者

そうなんですね。。
とんでもない凡ミスでした。。。
回答ありがとうございました1

2013/11/15 14:22:14

その他の回答1件)

匿名回答1号 No.1

ここでベストアンサー

それでiが1以上だったら終了して、

ここが違う。
「i が 1以上の間は続けて」だ。
終了条件ではない。継続条件だ。

匿名質問者

そうなんですね。。
とんでもない凡ミスでした。。。
回答ありがとうございました1

2013/11/15 14:22:14
匿名回答2号 No.2

それでiが1以上だったら終了して、


違います。i が 0 より大きいうちは実行、です。

匿名質問者

そうなんですね。。
とんでもない凡ミスでした。。。
回答ありがとうございました1

2013/11/15 14:22:19

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません