Ich verstehe den gesamten folgenden Code anhand eines Beispiels für ein Buch, das ich lese. Außer der kommentierten Zeile. Ich denke, dass ohne sie die Schleife nie endet? Ich verstehe die Logik dahinter jedoch nicht.
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);
3 Antworten
Dies ist eine Schleife, die bei 99 (var cans = "99"
) beginnt und dann rückwärts bis 0 zählt. Die hervorgehobene Zeile ist die Zeile mit der Aufschrift "Eins subtrahieren". Wenn diese Zeile nicht wäre, würde sie für immer eine Schleife bilden und 99 cans of Energy drink on the wall
hinzufügen.
Übrigens ist document.write
nur schlecht und var cans = "99"
sollte var cans = 99
sein. Natürlich ist dies wahrscheinlich nicht Ihr Code, nur sagen. Mein Rat: Lesen Sie weiter.
Wie D Strout sagte, ist es eine Schleife. Grundsätzlich lautet Ihr Code "Wenn die Variable cans größer als 0 ist, führen Sie diese Aktion aus". Wenn sich der Wert von Dosen niemals ändert, würde er versagen oder sich auf unbestimmte Zeit wiederholen. Sie beginnen also im Grunde mit 99 Dosen. Für jede Dose wird die Anzahl der Dosen um 1 subtrahiert, bis sie 0 ist. An diesem Punkt endet die Schleife.
D. Strout hat recht ...
Aber nur zu Ihrer Information - da Sie lernen - können Sie genau dasselbe auch mit einer 'for
' - Schleife anstelle der 'while
' - Schleife tun.
So was:
// 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/>";
}
Hier ist ein Link zu einem Arbeitsbeispiel, wenn Sie damit herumspielen möchten: http://jsfiddle.net/phillipkregg/CHyh2/
.