Porovnávanie hodnôt s booleovským typom v JavaScripte

V predchádzajúcom príklade sme na porovnanie použili operátor ===. V tomto prípade sa naša premenná porovnávala na rovnosť s true ako podľa hodnoty, tak aj podľa typu.

Pre takéto porovnanie sa dá použiť aj operátor ==. Ak bude v premennej test vždy jedna z hodnôt true alebo false, tak nič sa nezmení:

javascriptlet test = true; // tu píšeme buď true, alebo false

if (test == true) {
  console.log('+++');
} else {
  console.log('---');
}

No ak do premennej test môžu prísť ľubovoľné hodnoty, všetko sa stáva oveľa zložitejšie.

V takom prípade, ak bude v premennej test nebooleovská hodnota, tak sa táto hodnota najprv prevedie na booleovský typ a až potom sa bude porovnávať.

Nech napríklad v premennej test bude číslo 1. V tomto prípade sa najprv prevedie na logický typ, teda na true. A potom sa vykoná porovnanie:

javascriptlet test = 1;

if (test == true) {
  console.log('+++'); // spustí sa toto
} else {
  console.log('---');
}

No napríklad číslo 0 sa prevedie na false. A naša podmienka v dôsledku vypíše 'neplatné':

javascriptlet test = 0;

if (test == true) {
  console.log('+++');
} else {
  console.log('---'); // spustí sa toto
}

Takéto porovnanie sa v podstate dá explicitne prepísať do nasledujúceho tvaru:

javascriptlet test = 1;

if (Boolean(test) == true) {
  console.log('+++');
} else {
  console.log('---');
}
Задание 1

Spomeňte si a napíšte, ktoré hodnoty pri prevedení na booleovský typ dávajú false.

Задание 2

Bez spustenia kódu určite, čo sa vypíše do konzoly:

javascriptlet test = 1;
    
if (test == true) {
  console.log('+++');
} else {
  console.log('---');
}
Задание 3

Bez spustenia kódu určite, čo sa vypíše do konzoly:

javascriptlet test = 0;
    
if (test == true) {
  console.log('+++');
} else {
  console.log('---');
}
Задание 4

Bez spustenia kódu určite, čo sa vypíše do konzoly:

javascriptlet test = 1;
    
if (test == false) {
  console.log('+++');
} else {
  console.log('---');
}
Задание 5

Bez spustenia kódu určite, čo sa vypíše do konzoly:

javascriptlet test = 1;
    
if (test != true) {
  console.log('+++');
} else {
  console.log('---');
}
Задание 6

Bez spustenia kódu určite, čo sa vypíše do konzoly:

javascriptlet test = '';
    
if (test == false) {
  console.log('+++');
} else {
  console.log('---');
}
Задание 7

Bez spustenia kódu určite, čo sa vypíše do konzoly:

javascriptlet test;
    
if (test == true) {
  console.log('+++');
} else {
  console.log('---');
}
Задание 8

Bez spustenia kódu určite, čo sa vypíše do konzoly:

javascriptlet test = 3 * 'a';
    
if (test == true) {
  console.log('+++');
} else {
  console.log('---');
}