Урок 2 из 8 · 20 мин · обновлено

Операторы и условия

Арифметика и её ловушки, строгое сравнение ===, логические операторы и условные конструкции if, else if и else.

Арифметика

Основные операторы работают как в математике:

JavaScript
console.log(7 + 2);    // 9
console.log(7 - 2);    // 5
console.log(7 * 2);    // 14
console.log(7 / 2);    // 3.5
console.log(7 % 2);    // 1 — остаток от деления
console.log(2 ** 3);   // 8 — возведение в степень

Остаток % пригождается часто: например, число чётное, если n % 2 === 0.

Ловушка с плюсом

У оператора + двойная роль: он складывает числа и склеивает строки. Если хотя бы одна сторона — строка, JavaScript склеивает:

JavaScript
console.log(2 + 3);      // 5
console.log("2" + 3);    // "23"
console.log("2" * 3);    // 6 — умножение превращает строку в число

Такое автоматическое превращение типов — частый источник ошибок. Например, значение из поля формы всегда приходит строкой. Чтобы посчитать с ним, превратите его в число явно:

JavaScript
const input = "25";
console.log(Number(input) + 5);   // 30

Если превратить не получилось, будет NaN — «не число»: Number("abc") даст NaN.

Сравнение: === вместо ==

Сравнение возвращает true или false:

Оператор Значение
=== строго равно
!== строго не равно
>, <, >=, <= больше, меньше и так далее

В JavaScript есть два вида равенства. Нестрогое == перед сравнением превращает типы, и это даёт странные результаты:

JavaScript
console.log(5 == "5");    // true
console.log(0 == "");     // true
console.log(5 === "5");   // false

Поэтому правило простое: всегда используйте === и !==. Они сравнивают и значение, и тип.

Логические операторы

  • && (и) — верны оба условия;
  • || (или) — верно хотя бы одно;
  • ! (не) — переворачивает значение.
JavaScript
const age = 30;
const hasTicket = true;

console.log(age >= 18 && hasTicket);   // true
console.log(!hasTicket);               // false

Условия: if, else if, else

JavaScript
const temperature = 12;

if (temperature >= 20) {
  console.log("Можно идти в футболке");
} else if (temperature >= 10) {
  console.log("Возьмите куртку");
} else {
  console.log("Нужна тёплая одежда");
}

Условие пишут в круглых скобках, а блок кода — в фигурных. JavaScript проверяет условия сверху вниз и выполняет первый подходящий блок.

Для коротких выборов есть тернарный оператор — условие в одну строку:

JavaScript
const status = age >= 18 ? "взрослый" : "ребёнок";

Что считается ложью

В условие можно подставить не только true или false. Эти значения считаются ложью: 0, пустая строка "", null, undefined, NaN. Всё остальное — истина. Это удобно для коротких проверок:

JavaScript
const userName = "";

if (!userName) {
  console.log("Введите имя");
}

Попробуйте сами. Напишите код для кинотеатра: по возрасту age выведите цену билета. До 7 лет — бесплатно, от 7 до 17 — 250 ₽, от 18 — 400 ₽. Проверьте разные значения.

Решение
JavaScript
const age = 15;

if (age < 7) {
  console.log("Бесплатно");
} else if (age < 18) {
  console.log("Билет стоит 250 ₽");
} else {
  console.log("Билет стоит 400 ₽");
}

Во втором условии не нужно писать age >= 7 && age < 18: если программа дошла до else if, значит возраст уже точно не меньше 7.

Мини-тест: проверьте себя

Закрепите урок: несколько вопросов, разбор ответов — в конце.

  1. Что вернёт выражение "2" + 3?

  2. Чему равно 5 === "5"?

  3. При каком значении age условие age >= 18 && age < 65 будет верным?

  4. Что выведет код: const items = 0; if (items) { console.log('Есть товары'); } else { console.log('Корзина пуста'); }?