Podmienky

Niekedy je potrebné vykonať rôzne akcie na základe rôznych podmienok.

Ak to urobíme, použijeme príkaz if a podmienený (ternárny) operátor, na ktorý budeme odkazovať ako operátor „otazníka“ ? pre jednoduchosť.

Podmienka „if“

Príkaz if hodnotí podmienku a ak je výsledok podmienky pravdivý, vykoná blok kódu.

Napríklad:

let year = prompt('In which year was ECMAScript-2015 specification published?', '');

if (year == 2015) alert( 'You are right!' );

Vo vyššie uvedenom príklade je podmienkou jednoduchá kontrola rovnosti (year == 2015), ale môže byť oveľa zložitejšia.

Ak chceme vykonať viac ako jeden príkaz, tak musíme zabaliť náš kódový blok do krútených zátvoriek:

if (year == 2015) {
  alert( "That's correct!" );
  alert( "You're so smart!" );
}

Výraz „else“

Príkaz if môže obsahovať voliteľný blok „else„. Vykonáva sa, keď podmienka nie je splnená.

Napríklad:

let year = prompt('In which year was the ECMAScript-2015 specification published?', '');

if (year == 2015) {
  alert( 'You guessed it right!' );
} else {
  alert( 'How can you be so wrong?' ); // hocičo okrem 2015
}

Viaceré možnosti pomocou „else if“

Niekedy je potrebné zadať aj viacero možných prípadov. Na to nám slúži klauzula „else if„.

Napríklad:

let year = prompt('In which year was the ECMAScript-2015 specification published?', '');

if (year < 2015) {
  alert( 'Too early...' );
} else if (year > 2015) {
  alert( 'Too late' );
} else {
  alert( 'Exactly!' );
}

V kóde uvedenom vyššie skript skontroluje najskôr year <2015. Ak je to nepravdivé, prejde do ďalšieho stavu year> 2015. Ak je to tiež nepravdivé, zobrazí posledné upozornenie.

V prípade else if blokov môže byť zaradený aj ďalší. Posledný else je nepovinný.

Ternárny operátor „?“

Niekedy musíme priradiť premennú v závislosti od podmienky.

Napríklad:

let accessAllowed;
let age = prompt('How old are you?', '');

if (age > 18) {
  accessAllowed = true;
} else {
  accessAllowed = false;
}

alert(accessAllowed);

Ternárny operátor ? nám umožní zápis daného kódu výrazne skrátiť, pričom syntax je nasledovná:

let result = condition ? value1 : value2;

Máme premennú result, teda premennú, ktorá nadobudne hodnotu value1 ak je výraz condition správny a value2 ak je zadaný výraz condition nesprávny.

let accessAllowed = (age > 18) ? true : false;

Viacnásobný operátor „?“

Tak ako pri písaní podmienky if a else if, tak aj operátor ? je možné použiť viackrát pre jeden príkaz:

let age = prompt('age?', 18);

let message = (age < 3) ? 'Hi, baby!' :
  (age < 18) ? 'Hello!' :
  (age < 100) ? 'Greetings!' :
  'What an unusual age!';

alert( message );