前提・実現したいこと
先日コードを書いた際に中に誤って以下のようなコードを書いてしまった。
ただそのコードでなぜそのような挙動になったのかよくわからなかった。
発生している問題・エラーメッセージ
出力結果が無限ループとなる。
該当のソースコード
javascript
1// 出力結果 -> 0, 1・・・これはわかる 2for(let i=0; i<2; i++){ 3 console.log(i); 4}
javascript
1// 出力結果 -> 2, 2, 2, 2, 2, ... ・・・なんで? 2for(let i=0; i=2; i++){ 3 console.log(i); 4}
自分の考え
公式MDNのfor文を参照(MDN公式)
for ([初期化式]; [条件式]; [加算式]) 文
for ループが実行されるとき、次の処理が行われます :
- もしあれば、初期化式が実行されます。この式は通常、1 個またはそれ以上のループカウンタを初期化しますが、この構文ではいかなるレベルの複雑な式を入れることが可能です。初期化式で変数を宣言することもできます。
- 条件式 条件式が評価されます。条件式の値が true の場合、ループ文が実行されます。条件式の値が false の場合、for ループは終了します。条件式がすべて省略されている場合、条件式は真であると仮定されます。
- 文が実行されます。複数の文を実行するには、それらの文をグループ化するためにブロック文 ({ ... }) を使用します。
- もしあれば、更新式 加算式が実行されます。
- ステップ 2 に制御が戻ります。
iが2になった時ステップ2で条件式であるi=2は真となり、ステップ3まで進み、console.logが実行された後、加算式であるi++が実行されて、i=3となってそのあとにステップ2の条件式に戻る。その際iは3になるから条件式を満たさずconsole.logは出力されないのでは?と思った。
なので、console.logとして出力されるのは2が1回だけなのではないかと思っていました。
なぜ無限ループとなって2がずっと出力されるのでしょうか?
回答3件
あなたの回答
tips
プレビュー