Операторы

Операторы

Технический фундамент операторной модели

Оператор в JavaScript — это формальное правило преобразования операндов в результат:

  • тип операндов влияет на семантику операции;
  • один символ (+, =, ===) может полностью менять поведение выражения;
  • сложные решения почти всегда строятся из комбинации нескольких операторов;
  • читаемая декомпозиция выражений снижает риск логических дефектов.

Эта база нужна, чтобы использовать операторы как инженерный инструмент, а не как набор символов.

Почему операторы это база любого кода

Операторы в JavaScript - это инструменты, которые выполняют действия над значениями: считают, сравнивают, присваивают, проверяют условия. Без них переменные были бы просто "контейнерами", а логика программы не двигалась бы дальше.

Ключевой момент: оператор определяет, как именно JavaScript преобразует входные данные в новый результат.

Проверь себя: почему одна и та же пара значений может дать разный итог при +, === и &&?

Что считается оператором

К базовым группам относятся:

  • арифметические (+, -, *, /);
  • присваивания (=, +=, -=);
  • сравнения (>, <, ===);
  • логические (&&, ||, !);
  • типовые (typeof, instanceof).
const price = 100;
const discount = 20;
const finalPrice = price - discount; // арифметический
const isCheap = finalPrice < 90; // сравнение

Смотри, что важно: операторы часто работают вместе в одном выражении.

Операторы и выражения

Оператор почти всегда участвует в выражении - конструкции, которая вычисляется в значение.

const result = (10 + 5) * 2;

Здесь + и * объединены в одно выражение. Итог зависит от порядка вычисления (приоритета), который ты разберешь в следующих уроках.

Унарные, бинарные и тернарные

  • унарный оператор работает с одним операндом (!isActive);
  • бинарный - с двумя (a + b);
  • тернарный - с тремя частями (condition ? a : b).
const isAuth = false;
const label = !isAuth ? 'Гость' : 'Пользователь';

Здесь часто путаются: тернарный оператор компактный, но при сложных условиях его легко сделать нечитаемым.

Проверь себя: когда лучше использовать if/else, а когда тернарный оператор?

Мини-сценарий: статус шага обучения

const score = 72;
const hasAttempt = true;

const status = hasAttempt && score >= 70 ? 'passed' : 'retry';
console.log(status);

В одном примере работают сразу несколько операторов:

  • && объединяет условия;
  • >= сравнивает балл;
  • ?: выбирает строковый результат.

Это типичный прикладной код: небольшое выражение, но важное бизнес-решение.

Смотри, что важно: логические операторы && и || делают короткое замыкание (short-circuit) и возвращают не всегда true/false, а одно из значений.

console.log('ok' && 123); // 123
console.log(0 && 123); // 0
console.log('' || 'default'); // 'default'
console.log('ok' || 'default'); // 'ok'

Поэтому, если тебе нужен именно boolean, делай явные сравнения или приведение:

const hasPassed = hasAttempt && score >= 70;
const status2 = hasPassed ? 'passed' : 'retry';
console.log(status2);

Частые ошибки новичков

  • Путать присваивание = и сравнение ===.
  • Делать выражения слишком длинными и терять читаемость.
  • Не учитывать приоритет операторов.
  • Полагаться на неявные преобразования типов.

Анти-провал: если выражение сложно читать с первого раза, разбей его на 2-3 промежуточные переменные.

Что будет, если изменить входные данные

В примере со статусом:

  • score = 72, hasAttempt = true -> passed;
  • score = 60, hasAttempt = true -> retry;
  • hasAttempt = false -> всегда retry.

Это показывает, как операторы напрямую управляют результатом бизнес-логики.

Проверь себя: почему полезно отдельно логировать промежуточные проверки (hasAttempt, score >= 70)?

Краткий итог

  • Операторы задают действия над данными и лежат в основе каждого выражения.
  • В JS есть несколько групп операторов, и каждая решает свой тип задач.
  • Один реальный сценарий часто комбинирует сразу 2-3 вида операторов.
  • Большинство новичковых багов связано с путаницей операторов и приоритета.
  • Осознанная работа с операторами делает код предсказуемым и проще для отладки.