Autor Zpráva
robbie
Profil *
oravdu si lámu hlavu, proc je ve scriptu toto: text= ""; text += muze mi to nekdo prosim vic objasnit. dekuju
<script>
cars = ["BMW", "Volvo", "Saab", "Ford"]
text= "";
var i;
for (i = 0; i < cars.length; i++) {
    text += cars[i] + "<br>";
}

document.getElementById("demo").innerHTML = text;
</script>
mimochodec
Profil
Operátory
"přičtení, ale také připojení řetězce"
robbie
Profil *
A jak chápat tohle: text= ""; dekuji za pomoc
mimochodec
Profil
robbie:
Prosím tebe, asi takhle:

a = 1;  // toto znamená přiřazení hodnoty, neboli odteď a = 1
a = "";  // toto je přiřazení hodnoty, jen to není číslo, ale prázdný řetězec. Takže odteď a = "", neboli prázdný string. Možná bych laicky řekl 'nic'
weroro
Profil
robbie:
Pokiaľ by nebola táto premenná definovaná s prázdnym reťazcom, tak by ti vo výsledku nevypísalo:
BMW
Volvo
Saab
Ford
ale
undefinedBMW
Volvo
Saab
Ford
pretože je premenná nedefinovaná.
Ak by tam premenná nebola vôbec alebo by nemala na začiatku var text;, nevypísalo by ti nič.
robbie
Profil *
Dekuji za pohotové rady, oni to v učebnici nevysvetlili a rovnou napsali script, ted už to chápu o neco víc.
Fisir
Profil
Reaguji na robbieho:
V cyklu for se do proměnné text připojuje text. Aby se mohl připojit, musí dotyčná proměnná existovat. Proto se ještě před cyklem definuje (jako prázdný řetězec).
anonymníí
Profil *
weroro:
alebo by nemala na začiatku var text;, nevypísalo by ti nič.
Jseš si jistý? Tedy, s tím varem.
Radek9
Profil
anonymníí:
Pokud se pokusíš přistoupit k nedefinované proměnné (ne jen, že je v ní hodnota undefined, ale že není definovaná varem), opravdu to nevypíše nic, protože to místo toho vyhodí chybu.
anonymníí
Profil *
Radek9:
Nepochopil jsi.

Proměnná je deklarovaná, bez var. weroro psal, že by tam var být mělo (ve smyslu muselo). Být tam může, správně má být, ale nemusí. To je oč tu běží.
Fisir
Profil
Reaguji na anonymníího:
Já jsem toho názoru, že co se týče začátečníků, var musí být. Někdy to projde, ale někdy to vede k magickým a začátečníky těžko odhalitelným chybám (kolizím se stejnojmennými vlastnostmi objektu window).
Radek9
Profil
anonymníí:
Nepochopil jsi.
Ty jsi nepochopil. weroro uvedl tři stavy:
1. var text = "";
2. var text;
3. nic

Ve třetím případě by script vyhodil ReferenceError, neboť text += value odpovídá text = text + value a v tu chvíli proměnná text ještě není definovaná.
Chamurappi
Profil
Reaguji na Radka9:
Pokud dobře čtu, weroro zmínil stav „alebo by nemala na začiatku var“, tedy jen text = "".
V takovém případě proměnná vznikne (pravděpodobně) také a výstup bude vypadat stejně jako s var.


Reaguji na Fisira:
Já jsem toho názoru, že co se týče začátečníků, var musí být.
To je možné, ale lhát jim nebudeme :-)
weroro
Profil
anonymníí: Chamurappi
Práve preto som uviedol aj príklad var text; a nie var text = "";
Pokiaľ by som chcel priradiť do premennej deklarovanej takto text;, tak to už hodí chybu. Keď je definovaná ako var text; bude ako prvá hodnota undefined.

Ďakujem. :-)
Chamurappi
Profil
Reaguji na werora:
Tak to ti gratuluji k úspěšně sestavenému nedorozumění :-)
Vážně mě nenapadlo, že zmiňuješ možnost, že by člověk napsal jen text; (bez hodnoty i bez varu). To jsem ještě neviděl, že by někdo udělal.
janbarasek
Profil
Chamurappi:
Hehe, tohle není nic neobvyklého. Ve škole jsme se učili vždy na začátku programu psát takto názvy všech proměnných. Je to prasárna (to uznávám), ale dost lidí se to takto naučí (já naštěstí vždy nastavuji defaultní hodnotu).
Joker
Profil
janbarasek:
Ve škole jsme se učili vždy na začátku programu psát takto názvy všech proměnných.
Jako že vás učili dávat na začátek kódu např.: c; i; sirka; vyska; x; y; jmeno; promenna; dalsiPromenna;?

Nechápu, proč by to někdo dělal, je to padlé na hlavu a v některých jazycích (jako třeba JavaScript) pak kód ani nebude fungovat.
_es
Profil
Chamurappi:
Vážně mě nenapadlo, že zmiňuješ možnost, že by člověk napsal jen text; (bez hodnoty i bez varu). To jsem ještě neviděl, že by někdo udělal.
Videl, ale nezapamätal: Môžem testovať neexistujúcu premennú?

janbarasek:
já naštěstí vždy nastavuji defaultní hodnotu).
Vždy to „nastavovať“ nie je vhodné. Po príkaze var x; nemusí byť x undefined pokiaľ bolo x už predtým definované a „nastavené“. Ak myslíš pod „nastavením defaultnej hodnoty“ príkaz x=hodnota; bez predchádzajúceho príkazu var, tak to nie je dobrý nápad, lebo to môže v niektorých prehliadačoch v istých prípadoch vyvolať chybu: Časté potíže, zajímavosti a poučné debaty » Používejte var, InnerHTML problém v IE8

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: