Условия
Зачем это нужно
Программа должна уметь выбирать: показать кнопку «Войти» или «Выйти», пустить в игру или сказать «мало лет», дать скидку или нет. Для этого есть условия — код, который выполняется, только если что-то верно.
Как устроены задачи с функциями
С этой темы задачи выглядят так: в редакторе уже есть «заготовка» — функция:
function sign(n) {
}
Функция — это именованный кусок кода. Данные приходят в неё через параметр (здесь n), а
результат она отдаёт словом return. Проверка сама вызовет функцию с разными числами, например
sign(5) и sign(-2), и сравнит, что она вернула. Твоя задача — написать код внутри фигурных скобок.
Подробно функции разберём в теме 7, пока достаточно этого.
function double(n) {
return n * 2;
}
console.log(double(4));
Вывод:
8
if — «если»
const temperature = 30;
if (temperature > 25) {
console.log("Жарко! Возьми воду.");
}
console.log("Хорошего дня");
Вывод:
Жарко! Возьми воду.
Хорошего дня
В круглых скобках — условие. Если оно true, выполняется блок в фигурных скобках. Если false —
блок пропускается, и программа идёт дальше.
else — «иначе» и else if — «иначе если»
const score = 72;
if (score >= 90) {
console.log("Отлично");
} else if (score >= 70) {
console.log("Хорошо");
} else if (score >= 50) {
console.log("Удовлетворительно");
} else {
console.log("Нужно подтянуть");
}
Вывод:
Хорошо
Условия проверяются сверху вниз, и выполняется только первая подошедшая ветка. Хотя 72 >= 50
тоже верно, до этой проверки дело не дойдёт. Поэтому порядок важен.
return прерывает функцию
Внутри функции return сразу отдаёт результат и выходит из неё. Поэтому else после return
можно не писать:
function canVote(age) {
if (age >= 18) return "да";
return "нет";
}
console.log(canVote(20), canVote(15));
Вывод:
да нет
Если в блоке одна команда, фигурные скобки можно опустить, как здесь. Но когда команд несколько, скобки обязательны.
Логические операторы
| Оператор | Смысл | Пример |
|---|---|---|
&& |
И — оба условия верны | age >= 18 && hasTicket |
|| |
ИЛИ — хотя бы одно верно | isAdmin || isOwner |
! |
НЕ — переворачивает | !isLoggedIn |
const age = 20;
const hasTicket = true;
console.log(age >= 18 && hasTicket); // true
console.log(age < 12 || age > 65); // false
console.log(!hasTicket); // false
Можно группировать скобками: (a && b) || c.
Тернарный оператор ? :
Короткая запись «если-иначе», которая возвращает значение:
const age = 16;
const status = age >= 18 ? "взрослый" : "подросток";
console.log(status);
Вывод:
подросток
Читается так: «условие ? значение-если-да : значение-если-нет». Удобен для простого выбора
из двух вариантов; для сложной логики лучше if.
Значение по умолчанию: ?? и ||
const nickname = null;
console.log(nickname ?? "Гость"); // Гость
a ?? b вернёт b, только если a — null или undefined. А a || b вернёт b для любого
ложного a, включая 0 и "". Поэтому для чисел безопаснее ??: 0 ?? 10 → 0, а 0 || 10 → 10.
switch — выбор по значению
const day = "sat";
switch (day) {
case "sat":
case "sun":
console.log("Выходной");
break;
case "mon":
console.log("Понедельник — день тяжёлый");
break;
default:
console.log("Будний день");
}
Вывод:
Выходной
switch сравнивает значение строго (===) с каждым case. break обязателен — без него выполнение
«провалится» в следующий case. default срабатывает, если ничего не подошло.
Как это работает внутри
Условие в if не обязано быть true/false — JavaScript сам превратит его в логическое значение по
правилу «ложных» значений: 0, "", null, undefined, NaN — ложь, остальное — истина.
Поэтому if (name) означает «если имя не пустое». А && и || вычисляются лениво: если по
первой части ответ уже ясен (false && … или true || …), вторая часть даже не выполняется.
Частые ошибки
=вместо===.if (x = 5)присваивает 5 и всегда истинно. Пишиif (x === 5).- Неправильный порядок
else if. Если сначала проверитьscore >= 50, оценка «Отлично» никогда не выдастся. Начинай с самых строгих условий. - Двойное сравнение как в математике.
7 <= age <= 17в JS работает неправильно. Нужноage >= 7 && age <= 17. - Забыли
return. Функция безreturnвозвращаетundefined— проверка покажет, что полученоundefined. - Забыли
breakвswitch. Выполнятся несколько веток подряд.
Шпаргалка
| Что | Как |
|---|---|
| Если | if (условие) { … } |
| Иначе если / иначе | else if (…) { … } else { … } |
| И / ИЛИ / НЕ | &&, ||, ! |
| Тернарный | усл ? да : нет |
| По умолчанию | x ?? "запасное" |
| Выбор по значению | switch (x) { case …: …; break; default: … } |
| Вернуть из функции | return значение; |