Сравнение значений с булевым типом в JavaScript

В предыдущем примере мы использовали для сравнения оператор ===. В этом случае наша переменная сравнивалась на равенство true как по значению, так и по типу.

Для такого сравнения можно использовать и оператор ==. Если в переменной test всегда будет одно из значений true или false, то ничего и не изменится:

javascriptlet test = true; // тут пишем или true, или false

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

А вот если в переменную test могут попадать любые значения, то все становится намного сложнее.

В таком случае, если в переменной test будет не булево значение, то это значение вначале будет преобразовано к булеву и только затем будет сравниваться.

Пусть, например, в переменной test будет число 1. В этом случае оно вначале преобразуется к логическому типу, то есть к true. И затем будет выполнено сравнение:

javascriptlet test = 1;

if (test == true) {
  console.log('+++'); // сработает это
} else {
  console.log('---');
}

А вот, к примеру, число 0 преобразуется к false. И наше условие в результате выведет 'неверно':

javascriptlet test = 0;

if (test == true) {
  console.log('+++');
} else {
  console.log('---'); // сработает это
}

Фактически такое сравнение можно явно переписать в следующем виде:

javascriptlet test = 1;

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

Вспомните и напишите, какие значения при приведении к логическому типу дают false.

Задание 2

Не запуская код, определите, что выведется в консоль:

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

Не запуская код, определите, что выведется в консоль:

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

Не запуская код, определите, что выведется в консоль:

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

Не запуская код, определите, что выведется в консоль:

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

Не запуская код, определите, что выведется в консоль:

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

Не запуская код, определите, что выведется в консоль:

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

Не запуская код, определите, что выведется в консоль:

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