2012-04-13 9 views
1

私は実際にはjavascriptの初心者です。ちょうど基本を学ぶために、私はcodecademyでレッスンを受け始めました。JavaScriptのループ - 私を理解できる人は誰ですか?

var i; 
for (i = 1; i <= 40; i++) { 
    console.log("i is now equal to " + i); 
} 

ここに私の質問です - このコードでは、ときi <= 40、それはありません、41まで印刷する必要がありますか? forループは、条件i <= 40trueになるまで実行を続けますが、なぜそれが40までしか印刷されないのですか?

すなわち

それが40で実行されると、それは、一度それを増分することによって41まで印刷しますか?それで40までしか印刷されないのはなぜですか?

コードが正確に何を意味しているのか、それぞれの行が何を意味するのか誰かが私に説明してくれたなら、本当に感謝しています。ありがとう。

+0

私はすべてそれを行う理由です –

答えて

1

var i; // DECLARE A NEW VARIABLE NAMED i 

// set i to 1 and do things while i is less than or equal to 40 
// after this block of code has executed increase the counter by 1 

for (i = 1; i <= 40; i++) {  
    console.log("i is now equal to " + i); // print "i is now equal to <the value of i>" 
} 

次これは、それが私はループが終了しますその時点で、41に等しくなるような時間まで1によって数1初めて、各時間増分をプリントアウトすることを意味言う(しかしあなたは以下の

for (i = 0; i <= 40; i++) {  
    console.log("i is now equal to " + i); // print "i is now equal to <the value of i>" 
} 

を書いていた場合には41が印刷されることはありません意味{年代)

の間には多くの操作を行いませんWOU ldはカウントが0から始まり、反復が1回から始まるが、41に等しくなってもまだ終了するが、それでも41は出力されない。

ループ外で別のログステートメントを実行する場合は、 「ループが実行を停止し、私は41に等しいですが、この値は

+0

//ループの外側で別のログステートメントを実行する場合、私は41に等しいとわかりますが、この値はループの本体では使用されませんでした(中括弧内のビット)// @krystan honor - 最初にインクリメントが行われた後、条件がチェックされますか?ここで意味するループ文はconsole.logです。すなわち、{}内にあります。ご協力ありがとうございました。私はこれをクリアするのを助けてくれることを願っています。 – alvasrawuther

+0

注文は、私が '原因'に違反していないことを確認するので、この場合は41ではなく、中括弧でコードを実行し、中括弧でコードを増分してからチェックします。これは私が41に等しい理由ですが、ゲート条件に達しているため、中括弧内にコードは実行されません。これが助けとなるならば、これがアップホートと答えを受け入れるのを忘れないでほしいと思っています。 –

+0

この条件は実際にはループ内のものであり、外側では何も意味しません。条件がi≦40であっても、ループの外側でconsole.logを実行すると、41が表示されます。なぜなら、増分が停止するからです。 – alvasrawuther

0

i = 41が条件文(i <= 40)がチェックされ、falseが返されるループ(中括弧内のビット)の本体で使用されなかったことがわかりdはその内容

+1

私には宿題のようには見えませんが、OPはちょっとループ状態での操作の順序についてちょっと混乱しています –

+0

十分に公正で、不要なステートメントを削除しました。 – Terry

1

ループが最後に実行されたとき、iは40で、41に達するとループから脱落します。 i++ステートメントは、ループステートメントの後に実行されます。ループのための私< = 40は、forループ内のコードを実行する前にチェックされている、あなたの場合には、条件

for (var i= 0; /* initializer */; 
    i < 40; /* check whether it should run, before running loop statements */ 
    i++ /* happens after the loop statements */) 
0

をどのように動作するか

var i; 
for (i = 1; i <= 40; i++) { 
    console.log("i is now equal to " + i); 
} 

console.log("i is now equal to " + i); // Now it's 41 

です。ですから、私が41になると、私は< = 40と評価され、ブロックは実行されず、41は印刷されません。

また、インクリメント(i ++)は条件の前に発生します。

+0

ありがとう、私は今それを得る.... – alvasrawuther

2

i=1が初期化剤であるので、iの最初の値は、初期化後1

であり、先頭に各反復で、iは条件i<=40と照合されます。完了した各反復の後、インクリメントはi++で実行されます。 40回目の反復では、i = 40となり、条件を渡してログを出力します。その後、i++が呼び出され、ノッチは最大41になります。この場合、i<=40のテストに失敗します。そのため、ループはコードブロックを再度実行しません。

結果は、コンソールが1〜40を出力してから、i=41で終了することです。

関連する問題