Сравнение на стойности с булев тип в 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('---');
}