Porovnávání hodnot s booleovským typem v JavaScriptu

V předchozím příkladu jsme pro porovnání použili operátor ===. V tomto případě se naše proměnná porovnávala na rovnost s true jak podle hodnoty, tak podle typu.

Pro takové porovnání lze použít i operátor ==. Pokud bude v proměnné test vždy jedna z hodnot true nebo false, nic se nezmění:

javascriptlet test = true; // zde píšeme buď true, nebo false

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

Ale pokud do proměnné test mohou přicházet libovolné hodnoty, vše se stává mnohem složitějším.

V takovém případě, pokud je v proměnné test nebo booleovská hodnota, bude tato hodnota nejprve převedena na booleovskou a teprve poté bude porovnávána.

Předpokládejme například, že v proměnné test bude číslo 1. V tomto případě bude nejprve převedeno na logický typ, tedy na true. A poté bude provedeno porovnání:

javascriptlet test = 1;

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

Ale například číslo 0 se převede na false. A naše podmínka ve výsledku vypíše 'neplatí':

javascriptlet test = 0;

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

Takové porovnání lze vlastně explicitně přepsat do následující podoby:

javascriptlet test = 1;

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

Vzpomeňte si a napište, které hodnoty při převedení na logický typ dávají false.

Задание 2

Bez spuštění kodu určete, co se vypíše do konzole:

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

Bez spuštění kodu určete, co se vypíše do konzole:

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

Bez spuštění kodu určete, co se vypíše do konzole:

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

Bez spuštění kodu určete, co se vypíše do konzole:

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

Bez spuštění kodu určete, co se vypíše do konzole:

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

Bez spuštění kodu určete, co se vypíše do konzole:

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

Bez spuštění kodu určete, co se vypíše do konzole:

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