アプリ版:「スタンプのみでお礼する」機能のリリースについて

JavaScriptを勉強し始めた者です。
alert文とwhile文を組み合わせて、以下のようなプログラムを書いてみました。

<script>
var i=0;
var message=i+"になりました";

while(i<10){
alert(message);
i++;
}
</script>

「0になりました」「1になりました」「2になりました」……と、アラートを10回表示してくれるプログラムです。
alert("iになりました");などと書くと上手くいかないようなので、新たにmessageという変数を設けました。

質問なのですが、messageの内容をアラート10回表示させるところまでは上手くいくのですが、アラート内の変数表示が変化せず、10回とも「0になりました」と表示されるのです。
alert(i)にすると、きちんと「0」「1」「2」……とアラートで数えてくれるのですが、何が問題なのでしょうか?

A 回答 (3件)

var i=0


while(i<10)alert((i++)+"になりました")
    • good
    • 2
この回答へのお礼

回答ありがとうございます。

while文において、i++;は末尾に書くケースをよく見かけますが、そういう書き方もできるのですね。

お礼日時:2013/01/15 16:52

messageが作られた時点でiの値が0だからです。

messageにとってはそのあとiの値がどうなろうと知ったことじゃあないんです。

あなたが期待する動作をさせたいならば、
<script>
var i=0;
var message="になりました";

while(i<10){
alert(i+message);
i++;
}
</script>
でしょうか。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

message内に変数が含まれていれば、変数が変われば勝手にmessageも変わるだろうと思っていたのですが、while文中に入れておかないと変数の変化が反映されないのですね。

お礼日時:2013/01/15 16:50

whileの中でmessageを更新しないとしかたないのでは?


いちおうきちんとやるならtoStringもしたほうがいいですね

<script>
var i=0;
while(i<10){
var message=i.toString()+"になりました";
alert(message);
i++;
}
</script>
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

while文中でmessage内の変数を更新しないといけないのですね。

toString()メソッドを使わないと、どういう不具合が起きるのでしょうか?

お礼日時:2013/01/15 16:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!