- ベストアンサー
処理のしくみがわかりません・・・
以下のスクリプトはfor文による繰り返し処理の例です。 <script type="text/javascript"> <!-- var a="あ"; var b=new Array("い","う","え","お"); function FUNC1(){ for(i=0;i<b.length;i++){ a=a+b[i]; } document.write(a); } function FUNC2(){ for(i=0;i<b.length;i++){ document.write(a=a+b[i]); } } //--> </script> FUNC1の関数を実行すると、「あいうえお」、 FUNC2の関数を実行すると、「あいあいうあいうえあいうえお」 と表示されるのは理解できます。 それで試しにこのスクリプトの最後に、 FUNC1()+FUNC2(); を追加したところ、 「あいうえおあいあいうあいうえあいうえお」 と表示されると思いきや、 「あいうえおあいうえおいあいうえおいうあいうえおいうえあいうえおいうえお」 と表示されました。 どうもFUNC2を足す時、グローバル変数 a が "あ" ではなく、 "あいうえお" と代入されて実行されてるみたいです。 そして、FUNC1、FUNC2を実行すると、それぞれ 「あいうえおいうえおいうえお」 「あいうえおいうえおいあいうえおいうえおいうあいうえおいうえおいうえあいうえおいうえおいうえお」 と、理解不能の文字の並びになってしまいました。 なぜ FUNC1()+FUNC2(); を追加したらそれぞれの関数の実行値が変わってしまったのでしょうか? その処理の仕組みをご教授お願いいたします<(_ _)>
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
その他の回答 (2)
- gimmick
- ベストアンサー率49% (134/270)
お礼
まさにツボをついた回答ありがとうございます。<(_ _)> いろいろ試してみて、他ではグローバル変数の値が変更されるのに、 今回のようなdocument.writeメソッドを使った時には、 グローバル変数の値が変わらないので、???と思っていました。 FUNC1やFUNC2を実行した後、ページを元に戻ると、 再びページロードした際に、グローバル変数 a は、 a="あ" と定義しなおされるということですね。 leadさんとgimmickさんが提示していただいた例文に加えて、 サブウィンドウを開き、そこに document.write で a の値を書き出す方法も試して、すべての謎が氷解しました。 今回はどうもありがとうございました。 またよろしくお願いいたします<(_ _)>