/ janturon.cz / Výuka / Javascript / if

if

Logický typ

V našem dotazovacím programu z minulého dílu bychom uživatele měli pozdravit jen tehdy, vyplnil-li svoje jméno. Takovéto podmíněné spuštění lze zapsat jako:

if(podmínka) příkaz;

kde příkaz se provede pouze tehdy, je-li podmínka vyhodnocena jako splněná. Je typu bool (logický), může nabývat dvou hodnot definovaných jako konstanty:

Jako false jsou vyhodnoceny konstanty null, undefined, NaN. Prázdný řetězec a nula jsou také vyhodnoceny jako false, vše ostatní je true. Můžeme tedy psát:

<script> name = prompt("What is your name?"); if(name) alert("Hello, "+name); </script>

Můžeme také přidat část else, která se provede, není-li podmínka vyhodnocena jako true:

if(name) alert("Hello, "+name); else alert("Budu ti říkat Pepa");

Chceme-li do podmínky dát více než jeden příkaz, musíme příkazy umístit do složených závorek:

if(name) alert("Hello, "+name); else { alert("Budu ti říkat Pepa"); name = "Pepa"; }

Logický typ a operátory

Všechny aritmetické operátory vrací hodnotu:

aritmetické

V podmínkách se často používají též logické operátory (mají nižší prioritu než aritmetické):

logické

vyjímky proti logice

porušení identity: operace s NaN vrací false, jakákoliv aritmetická vrací NaN. Pro porovnávání s NaN slouží funkce isNaN().

NaN==NaN; // false NaN!=NaN; // true (porovnání, pak negace) 42+NaN: // NaN isNaN(NaN); // true isNaN(0); // false

porušení zásady sporu:

undefined==undefined // true undefined<=undefined: // false undefined>=undefined: // false undefined<undefined: // false undefined>undefined: // false

porušení sylogismu:

""==0: // true 0=="0": // true ""=="0": // false

A nakonec pozor na záměnu operátoru přiřazení a porovnání

if(name="Pepa") alert("Hello, "+name);

Příkaz alert se zde provede vždy a vždy vypíše "Hello, Pepa" bez ohledu na to, co bylo do name zadáno. Přiřazení přiřadí do name "Pepa", výraz se vyhodnotí jako true a příkaz se provede vždy.

 

Úkol

age = prompt("Kolik je ti let?"); sex = confirm("Jsi muž?"); description = getDescription(age,sex); alert(description);