Compararea valorilor cu tipul boolean în JavaScript

În exemplul anterior am folosit pentru comparație operatorul ===. În acest caz, variabila noastră era comparată pentru egalitate cu true atât ca valoare, cât și ca tip.

Pentru o astfel de comparație se poate folosi și operatorul ==. Dacă în variabila test va fi întotdeauna una dintre valorile true sau false, atunci nimic nu se va schimba:

javascriptlet test = true; // aici scriem fie true, fie false

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

Dar dacă în variabila test pot apărea orice valori, atunci totul devine mai complex.

În acest caz, dacă în variabila test nu este o valoare booleană, atunci această valoare va fi mai întâi convertită la boolean și abia apoi va fi comparată.

Să presupunem, de exemplu, că în variabila test se află numărul 1. În acest caz, el va fi mai întâi convertit la tipul logic, adică la true. Și apoi va fi efectuată comparația:

javascriptlet test = 1;

if (test == true) {
  console.log('+++'); // acesta se va executa
} else {
  console.log('---');
}

Dar, de exemplu, numărul 0 se convertește la false. Și condiția noastră, ca rezultat, va afișa 'incorect':

javascriptlet test = 0;

if (test == true) {
  console.log('+++');
} else {
  console.log('---'); // acesta se va executa
}

De fapt, o astfel de comparație poate fi rescrisă explicit în următoarea formă:

javascriptlet test = 1;

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

Amintiți-vă și scrieți care valori la convertirea la tipul logic dau false.

Задание 2

Fără a rula codul, determinați ce se va afișa în consolă:

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

Fără a rula codul, determinați ce se va afișa în consolă:

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

Fără a rula codul, determinați ce se va afișa în consolă:

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

Fără a rula codul, determinați ce se va afișa în consolă:

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

Fără a rula codul, determinați ce se va afișa în consolă:

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

Fără a rula codul, determinați ce se va afișa în consolă:

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

Fără a rula codul, determinați ce se va afișa în consolă:

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