Пусть у нас есть какая-то булева переменная,
которая может принимать значения true
или false
:
let test = true;
Давайте напишем if
, проверяющий нашу
переменную на значение true
:
let test = true;
if (test === true) {
alert('верно');
} else {
alert('неверно');
}
Если переменная test
равна true
,
то выведите на экран слово 'верно'
,
иначе выведите слово 'неверно'
.
Если переменная test
равна false
,
то выведите на экран слово 'верно'
,
иначе выведите слово 'неверно'
.
Логические значения и двойное равно
В предыдущем примере я использовал для сравнения
оператор ===
. В этом случае наша переменная
сравнивалась на равенство true
как
по значению, так и по типу.
В нашей задаче можно использовать и оператор
==
. Если в переменной test
всегда будет одно из значений true
или false
, то ничего и не изменится:
let test = true; // тут пишем или true, или false
if (test == true) {
alert('верно');
} else {
alert('неверно');
}
А вот если в переменную test
могут
попадать любые значения, то все становится
намного сложнее.
В таком случае, если в переменной test
будет не булево значение, то это значение
вначале будет преобразовано к булеву и только
затем будет сравниваться.
Пусть, например, в переменной test
будет число 1
. В этом случае оно вначале
преобразуется к логическому типу, то есть
к true
. И затем будет выполнено сравнение:
let test = 1;
if (test == true) {
alert('верно'); // сработает этот alert, тк 1 == true - это верно
} else {
alert('неверно');
}
А вот, к примеру, число 0
преобразуется
к false
. И наше условие в результате
выведет 'неверно'
:
let test = 0;
if (test == true) {
alert('верно');
} else {
alert('неверно'); // сработает этот alert, тк 0 == true - это НЕверно
}
Напомню вам значения, которые при приведению
к логическому типу дают false
: 0
,
-0
, +0, null, false, NaN, undefined,
'' (пустая строка).
Не запуская код, определите, что выведется на экран:
let test = 1;
if (test == true) {
alert('верно');
} else {
alert('неверно');
}
Не запуская код, определите, что выведется на экран:
let test = 0;
if (test == true) {
alert('верно');
} else {
alert('неверно');
}
Не запуская код, определите, что выведется на экран:
let test = 1;
if (test == false) {
alert('верно');
} else {
alert('неверно');
}
Не запуская код, определите, что выведется на экран:
let test = 1;
if (test != true) {
alert('верно');
} else {
alert('неверно');
}
Не запуская код, определите, что выведется на экран:
let test = '';
if (test == false) {
alert('верно');
} else {
alert('неверно');
}
Не запуская код, определите, что выведется на экран:
let test;
if (test == true) {
alert('верно');
} else {
alert('неверно');
}
Не запуская код, определите, что выведется на экран:
let test = 3 * 'a';
if (test == true) {
alert('верно');
} else {
alert('неверно');
}
Сокращенный иф
Пусть, к примеру, мы хотим узнать, равна
ли переменная test
значению true
.
В этом случае конструкцию if
можно
записать так:
let test = true;
if (test == true) {
alert('верно');
} else {
alert('неверно');
}
При программировании такие проверки требуются очень часто, поэтому для них существует более изящная сокращенная форма: вместо if (test == true) можно написать просто if (test).
Давайте перепишем наш код в сокращенной форме:
let test = true;
if (test) { // эквивалентно if (test == true)
alert('верно');
} else {
alert('неверно');
}
Пусть теперь мы проверяем на то, что переменная
test
не равна true
:
let test = true;
if (test != true) {
alert('верно');
} else {
alert('неверно');
}
В этом случае сокращенный синтаксис будет выглядеть так:
let test = true;
if (!test) { // используем логическое НЕ
alert('верно');
} else {
alert('неверно');
}
Аналогичное сокращение существует и для проверки
на false
.
Пусть дан вот такой код:
let test = true;
if (test == false) {
alert('верно');
} else {
alert('неверно');
}
Условие test == false на самом деле все равно, что test != true:
let test = true;
if (test != true) {// эквивалентно if (test == false)
alert('верно');
} else {
alert('неверно');
}
Ну, а такое условие мы уже научились сокращать в предыдущем примере. Сократим:
let test = true;
if (!test) {
alert('верно');
} else {
alert('неверно');
}
Перепишите следующий код с использованием сокращенного сравнения:
let test = true;
if (test == true) {
alert('верно');
} else {
alert('неверно');
}
Перепишите следующий код с использованием сокращенного сравнения:
let test = true;
if (test == false) {
alert('верно');
} else {
alert('неверно');
}
Перепишите следующий код с использованием сокращенного сравнения:
let test = true;
if (test != true) {
alert('верно');
} else {
alert('неверно');
}
Перепишите следующий код с использованием сокращенного сравнения:
let test = true;
if (test != false) {
alert('верно');
} else {
alert('неверно');
}
Нюанс
Учтите, что в сокращенных операциях сравнение
идет по ==
, а не по ===
.
Не запуская код, определите, что выведется на экран:
let test = 3;
if (test) {
alert('верно');
} else {
alert('неверно');
}
Не запуская код, определите, что выведется на экран:
let test = 'abc';
if (test) {
alert('верно');
} else {
alert('неверно');
}
Не запуская код, определите, что выведется на экран:
let test = '';
if (test) {
alert('верно');
} else {
alert('неверно');
}
Не запуская код, определите, что выведется на экран:
let test = 3 * 'abc';
if (test) {
alert('верно');
} else {
alert('неверно');
}
Не запуская код, определите, что выведется на экран:
let test = null;
if (test) {
alert('верно');
} else {
alert('неверно');
}
Не запуская код, определите, что выведется на экран:
let test = false;
if (test) {
alert('верно');
} else {
alert('неверно');
}
Не запуская код, определите, что выведется на экран:
let test;
if (test) {
alert('верно');
} else {
alert('неверно');
}
Не запуская код, определите, что выведется на экран:
let test = 0;
if (test) {
alert('верно');
} else {
alert('неверно');
}
Не запуская код, определите, что выведется на экран:
let test = '0';
if (test) {
alert('верно');
} else {
alert('неверно');
}
Не запуская код, определите, что выведется на экран:
let test = -1;
if (test) {
alert('верно');
} else {
alert('неверно');
}