Autor Zpráva
robbie
Profil
Ahoj, vysvetli mi prosim nekdo cast kodu, jež sem oznacil komentířem? Děkuji moc

<script>
function myFunction() {
    var myNumber = 2;
    var txt = "";
    while (myNumber != Infinity) {
        myNumber = myNumber * myNumber;
        txt += myNumber + "<br>";                                  // co prosim ošetřuje tento řádek nebo co ma za funkci, kdyz var txt je prázdné proč tedy +=myNumber//
    }
    document.getElementById("demo").innerHTML = txt;
}
</script>
nightfish
Profil
Protože txt je prázdné jenom při prvním průchodu smyčkou while.
Alternativně to jde napsat jako:
txt = txt + myNumber + "<br>";
robbie
Profil
nightfish:
to všechno chápu, že txt = txt + myNumber + "<br>"; je txt += myNumber + "<br>";

ale když je var myNumber = 2;
tak tyhle dva řádky pořád nechápu. Přece pokud
myNumber = myNumber * myNumber; // tak myNumber je = 2*2 a to je 4
txt += myNumber + "<br>"; // takže zde už je pořáde txt+= kde myNumber je 4,
ale jakou částí kodu docílím, že funkce dále násobí již 16x16 a ne zase 2*2 (myNumber = myNumber * myNumber;) a v dalším průchodu funkcí už se násobí 256x256 atd.,

proč je na začátku tedy var txt="" prázdné a není prázdná var myNumber ?? Díky
nightfish
Profil
Když by sis tu smyčku rozbalil, tak to bude vypadat takto (v komentářích vypisuju aktuální hodnoty proměnných po provedení toho kterého řádku):
var myNumber = 2; // myNumber = 2; txt = undefined
var txt = ""; // myNumber = 2; txt = ""
myNumber = myNumber * myNumber; // myNumber = 4; txt = ""
txt += myNumber + "<br>"; // myNumber = 4; txt = "4<br>"
myNumber = myNumber * myNumber; // myNumber = 16; txt = "4<br>"
txt += myNumber + "<br>"; // myNumber = 16; txt = "4<br>16<br>"
myNumber = myNumber * myNumber; // myNumber = 256; txt = "4<br>16<br>"
txt += myNumber + "<br>"; // myNumber = 256; txt = "4<br>16<br>256<br>"
myNumber = myNumber * myNumber; // myNumber = 65536; txt = "4<br>16<br>256<br>"
txt += myNumber + "<br>"; // myNumber = 65536; txt = "4<br>16<br>256<br>65536<br>"
myNumber = myNumber * myNumber; // myNumber = 4294967296; txt = "4<br>16<br>256<br>65536<br>"
txt += myNumber + "<br>"; // myNumber = 4294967296; txt = "4<br>16<br>256<br>65536<br>4294967296<br>"
...
A až JS vyhodnotí, že aktuální hodnota myNumber odpovídá nekonečnu, tak to smyčku opustí, a aktuální obsah proměnné txt se vypíše do prvku #demo.
robbie
Profil
...se opravdu omlouvám, sem asi natvrdlej.
Ale kdo nebo co řekne funkci, že nemá použít už var myNumber = 2; ale pak už za var myNumber=4; dosadit 4ku , pak 16ctku atd.?
Ta hodnota pořáde dál přepisuje locální proměnnou var myNumber ? Děkuji
Casero
Profil
robbie:
Možná máš zmatek, co znamená var?
nightfish
Profil
robbie:
Ale kdo nebo co řekne funkci, že nemá použít už var myNumber = 2; ale pak už za var myNumber=4; dosadit 4ku , pak 16ctku atd.?
To je přesně to, co se děje na řádku 6 tvého kódu v [#1].
robbie
Profil
nightfish:
Dělkuju moc za rady a váš čas. Fakt si toho vážim.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0