質問: 0 ) { ++i; } else { --i; } alert(i); ``` ### 試したこと for文の結果、iの値は3になり、if文の結果falseを返すので値は2になると思います。 しかしながら、実際にコードを実行するとfor文の結果は3になりますが、そのあとのif文の結果は5になります。 3%2===0はfalseなので値がマイナスされて2になるはずだと思ったんですが、5になるのはどういう理由からなんでしょうか? 仮にfor文の中にif文が含まれていたとしてもfor文で値が1になり、if文でfalseを返すので0に戻り計算が永遠に終わりません。 いくら考えてもiの値が3を超える理由がわからなかったので質問させていただきました。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。
回答: forループ中にループ変数に代入すると意味不明な挙動になるのでご法度だと思いますが、 ``` for (i = 0; i < 3; i++) { console.log("1:"+i) i = i + 1; console.log("2:"+i) } console.log("3:"+i) if ( i % 2 === 0 ) { ++i; } else { --i; } alert(i); ``` こうやってfor文中および抜けたタイミングで`i`の値がどう変化したのかを追えばわかるんじゃないですかね。