Přiřadit, nebo porovnat?
Rovnítko má v JavaScriptu dvě různé úlohy podle toho, kolik jich napíšete:
=přiřazuje: uloží hodnotu zprava do proměnné vlevo.skore = 10znamená „skoreje teď 10“.===porovnává: ptá se, jestli se dvě hodnoty rovnají, a nic nemění.skore === 10znamená „jeskore10?“
Napsat v podmínce = místo === je jedna z nejčastějších chyb a JavaScript vás na ni neupozorní:
let vek = 15;
if (vek = 18) {
console.log("Všechno nejlepší k osmnáctinám!");
}
console.log("Věk:", vek);Tento kód vypíše:
Všechno nejlepší k osmnáctinám!
Věk: 18Podmínka vek = 18 se na nic neptá. Změní vek na 18 a příkaz if pak tuto osmnáctku použije jako podmínku. Číslo různé od 0 se počítá jako pravda, a tak se blok provede. Jsou to dvě chyby najednou: špatná zpráva a proměnná, která přišla o svou hodnotu.
Kdyby vek byla konstanta (const vek = 15;), dostali byste aspoň chybovou hlášku, protože konstantu změnit nejde: TypeError: Assignment to constant variable. To je další důvod, proč pro hodnoty, které se nemění, používat const.
JavaScript má také == se dvěma rovnítky. Před porovnáním převede obě hodnoty na stejný typ, takže "5" == 5 je pravda, přestože jedno je text a druhé číslo. Se třemi rovnítky je "5" === 5 nepravda: text a číslo se nikdy nerovnají. Takové převody vedou k nečekaným výsledkům, a proto vždy používejte === a !==, nikdy == a !=.
Jak psát:
Pokyny
Spusťte program. Student má 40 bodů, a přesto se vypíše Plný počet bodů! a Body: 100. Opravte podmínku tak, aby porovnávala body se 100 pomocí ===. Program pak vypíše jen Body: 40.
Přidejte větev else, která vypíše Trénujte dál.
Začněte programovat zdarma
4/11