質問: 1; i <= 100; i++);{ ``` とすると、 101という結果が出るのはなぜでしょうか?? for文の条件がi<=100なのに、なぜ101が出るのか疑問です・・・。
回答: > > for文の条件がi<=100なのに、なぜ101が出るのか疑問です・・・。 > > > `for (var i = 1; i <= 100; i++)`を「`i`を1から100まで繰り返せ」という宣言的な物と理解しているのが間違いです。 `for (var i = 1; i <= 100; i++)`は、goto文のあるCで書くと、概ね下記のコードと同等です。 JavaScriptでも意味的には同じです。 ``` i=1; LOOP: if( ! (i<=100) ) goto OUT; forの閉じ括弧の直後の文を実行; i++; goto LOOP; OUT: ``` つまり、ループを抜け出したときは、`(i<=100)`が偽で`i`は100を越えています。 `for (var i = 1; i <= 100; i++);`と括弧の直後にセミコロンを書いちゃうと、「forの閉じ括弧の直後の文」が空文になりますので、結局、ループを空回りして`(i<=100)`が偽になった段階で次の文に進みます。