Porównywanie wartości z typem boolean w JavaScript

W poprzednim przykładzie użyliśmy do porównania operatora ===. W tym przypadku nasza zmienna była porównywana pod kątem równości true zarówno pod względem wartości, jak i typu.

Do takiego porównania można również użyć operatora ==. Jeśli w zmiennej test zawsze będzie jedna z wartości true lub false, to nic się nie zmieni:

javascriptlet test = true; // tu piszemy albo true, albo false

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

A jeśli do zmiennej test mogą trafiać dowolne wartości, wszystko staje się dużo bardziej skomplikowane.

W takim przypadku, jeśli w zmiennej test znajduje się wartość niebędąca typem boolean, to wartość ta najpierw zostanie przekształcona na typ boolean i dopiero następnie będzie porównywana.

Załóżmy na przykład, że w zmiennej test znajduje się liczba 1. W tym przypadku najpierw zostanie ona przekształcona na typ logiczny, czyli na true. A następnie zostanie wykonane porównanie:

javascriptlet test = 1;

if (test == true) {
  console.log('+++'); // to się wykona
} else {
  console.log('---');
}

A na przykład liczba 0 przekształca się na false. I nasz warunek w rezultacie wypisze 'nieprawidłowo':

javascriptlet test = 0;

if (test == true) {
  console.log('+++');
} else {
  console.log('---'); // to się wykona
}

W zasadzie takie porównanie można wyraźnie przepisać w następującej formie:

javascriptlet test = 1;

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

Przypomnijcie sobie i napiszcie, jakie wartości przy przekształcaniu na typ logiczny dają false.

Задание 2

Bez uruchamiania kodu określ, co zostanie wypisane w konsoli:

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

Bez uruchamiania kodu określ, co zostanie wypisane w konsoli:

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

Bez uruchamiania kodu określ, co zostanie wypisane w konsoli:

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

Bez uruchamiania kodu określ, co zostanie wypisane w konsoli:

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

Bez uruchamiania kodu określ, co zostanie wypisane w konsoli:

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

Bez uruchamiania kodu określ, co zostanie wypisane w konsoli:

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

Bez uruchamiania kodu określ, co zostanie wypisane w konsoli:

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