Условия
Условия позволяют программе выбирать, какой код выполнить. Без них программа всегда делала бы одно и то же, независимо от данных: показывала бы скидку всем подряд или пускала на сайт без пароля.
if
Код в фигурных скобках после if выполняется, только если условие в круглых скобках истинно. Код в фигурных скобках называют блоком:
const age = 20;
if (age >= 18) {
console.log('Доступ разрешён'); // Доступ разрешён
}Если условие ложно, блок пропускается, и программа идёт дальше. Код внутри блока принято сдвигать на два пробела — так видно, что он относится к условию.
else
Блок else («иначе») выполняется, когда условие ложно. Из двух блоков всегда срабатывает ровно один:
const age = 15;
if (age >= 18) {
console.log('Доступ разрешён');
} else {
console.log('Доступ запрещён'); // Доступ запрещён
}else if
Когда вариантов больше двух, между if и else добавляют else if. Условия проверяются сверху вниз, и выполняется первый подходящий блок — остальные пропускаются:
const score = 75;
if (score >= 90) {
console.log('Отлично');
} else if (score >= 70) {
console.log('Хорошо'); // Хорошо
} else {
console.log('Нужно подтянуть');
}Порядок важен: если поставить проверку >= 70 первой, оценка 95 тоже получит «Хорошо».
Что считается истиной
В условии можно использовать не только сравнение, но и любое значение. Ложными считаются false, 0, пустая строка, null, undefined и NaN — их называют ложными (falsy). Всё остальное — истинные (truthy) значения:
const name = '';
if (name) {
console.log(`Привет, ${name}!`);
} else {
console.log('Имя не указано'); // Имя не указано
}Так удобно проверять, что строка не пустая или что значение вообще задано.
Тернарный оператор
Тернарный оператор — короткая форма if-else для выбора одного из двух значений. Сначала пишут условие, после ? — значение для истины, после : — для лжи:
const age = 15;
const group = age >= 18 ? 'взрослый' : 'ребёнок';
console.log(group); // ребёнокОн хорош для простых случаев, например чтобы выбрать слово для вывода. Сложную логику лучше оставить обычному if — так её легче читать.
Частая ошибка
Один знак = в условии — это присваивание, а не сравнение. Такое условие не проверяет значение, а меняет его, и блок выполняется почти всегда:
let role = 'гость';
if (role = 'админ') {
console.log('Добро пожаловать в панель'); // Добро пожаловать в панель
}Для сравнения всегда пишите три знака: role === 'админ'.