1

私が読んでいる本の例から、次のコードをすべて理解しています。コメント行を除いて。それなしではループは決して終わらないと思いますか?しかし、その背後にある論理はわかりません。

var drink = "Energy drink";
var lyrics = "";
var cans = "99";

while (cans > 0) {
    lyrics = lyrics + cans + " cans of " + drink + " on the wall <br>";
    lyrics = lyrics + cans + " cans of " + drink + " on the wall <br>";
    lyrics = lyrics + "Take one down, pass it around, <br>";

    if (cans > 1) {
        lyrics = lyrics + (cans-1) + " cans of" + drink + " on the wall  <br>";
    }
    else {
        lyrics = lyrics + "No more cans of" + drink + " on the wall<br>";
    }
    cans = cans - 1;  // <-- This line I don't understand
}

document.write(lyrics);
4

3 に答える 3

2

これは、99()で始まり、var cans = "99"0まで逆方向にカウントするループです。強調表示された行は、「1を引く」という行です。その行がなかった場合、それはループし続け、99 cans of Energy drink on the wall永久に追加されます。

ところで、document.writeただ悪いです、そしてvar cans = "99"そうあるべきですvar cans = 99。もちろん、これはおそらくあなたのコードではなく、ただ言ってください。私のアドバイス:読み続けてください。

于 2012-10-06T04:07:11.423 に答える
0

Dストラウトが言ったように、それはループです。基本的に、あなたのコードは「変数が0より大きい間、このアクションを実行する」と言っています。缶の価値が決して変わらない場合、それは失敗するか、無期限に繰り返されます。つまり、基本的には99缶から始めます。缶ごとに、缶の数を1ずつ引いて、0になると、ループが終了します。

于 2012-10-06T04:09:12.067 に答える
0

D.ストラウトは正しいです...

forただし、参考までに、学習しているので、' 'ループの代わりに''ループを使用してまったく同じことを行うこともできwhileます。

このような:

// store the div in a variable to use later - at the bottom 
var beer_holder = document.getElementById("beer_holder");

// Non-alcoholic to keep it PG
var drink = "O'Doul's";

var lyrics = "";

var cans = "99";

// Create a variable called 'i' and set it to the cans variable amount. 
// Check if i is greater than 0,
// if it is, than do what is between the curly brackets, then subtract 1 from cans
for(var i=cans; i > 0; i--){

    lyrics = i + " cans of " + drink + " on the wall, " + i + " cans of " + drink +
        " take one down, pour it down the sink, " + (i - 1) + " cans of O'Doul's on the wall."

    // take the paragraph tag and put the lyrics within it
    //  the <br/> tags make sure each lyric goes on a seperate line
    beer_holder.innerHTML += lyrics + "<br/><br/>";

}

試してみたい場合の実例へのリンクは次のとおりです。http: //jsfiddle.net/phillipkregg/CHyh2/

</ p>

于 2012-10-06T04:55:16.703 に答える