Кратко
Операторы — это символы, которые выполняют действия со значениями: сложение (+), сравнение (===), логические операции (&&, ||) и особый оператор ?? (nullish coalescing), который выбирает значение, если оно null или undefined.
Подробно
Операторы делятся на категории:
Арифметические: + - * / % (остаток) ** (степень)
Строковые:
- + конкатенирует строки: 'hello' + ' ' + 'world'
Сравнительные:
- === строгое сравнение (значение И тип)
- == нестрогое сравнение (только значение, с приведением типов)
- > < >= <=
Логические:
- && И (оба должны быть true)
- || ИЛИ (хотя бы одно true)
- ! НЕ (инвертирует)
Nullish coalescing (??):
- Возвращает правое значение, если левое — null или undefined
- Отличие от ||: || считает 0, '' и false «пустыми», ?? — нет
Присваивающие: += -= *= /= %= ++ --
Особенности:
- typeof — определяет тип значения
- in — проверяет наличие свойства в объекте
- instanceof — проверяет прототип объекта
Приоритет операторов:
- () (скобки)
- ** (степень)
- * / %
- + -
- === !== > < >= <=
- ! && ||
- ??
- = += -= и т.д.
Ментальная модель
Операторы — это как арифметика в школе, только расширенная. + - * / — это база. === — это вопрос «это одинаковые вещи?». && — это «оба условия должны быть выполнены».
Примеры
**Самый простой:**
let a = 10;
let b = 3;
console.log(a + b); // 13
console.log(a - b); // 7
console.log(a * b); // 30
console.log(a / b); // 3.333...
console.log(a % b); // 1 (остаток от деления)Базовые арифметические операторы работают как в математике.
**Простой:**
let input = null;
let defaultName = 'Гость';
// || считает 0, '' и false «пустыми»
let name1 = input || defaultName; // 'Гость'
// ?? считает пустыми только null/undefined
let name2 = input ?? defaultName; // 'Гость'
let count = 0;
console.log(count || 10); // 10 (0 считается «пустым»!)
console.log(count ?? 10); // 0 (0 — не null/undefined)?? и || ведут себя по-разному с 0, '' и false. ?? более предсказуем для значений по умолчанию.
**Реальный пример:**
let age = 17;
let hasTicket = true;
// && — оба условия должны быть true
if (age >= 18 && hasTicket) {
console.log('Добро пожаловать!');
} else {
console.log('Доступ запрещён');
}
// || — хотя бы одно true
let memberType = 'premium' || 'free'; // 'premium'
let discount = 0;
let finalPrice = discount || 100; // 100 (0 считается «пустым»!)&& и || — основа условной логики. Они позволяют комбинировать несколько условий в одно.
Частые ошибки
**Неправильно:** Использовать == вместо ===
**Почему:** == приводит типы: '5' == 5 → true. Это может привести к неожиданным результатам.
**Правильно:** Используйте === как стандарт. == изучите, чтобы понимать существующий код.
**Неправильно:** Путать || и ??
**Почему:** || считает 0, '' и false «пустыми». ?? считает пустыми только null и undefined.
**Правильно:** Используйте ?? когда хотите значение по умолчанию для null/undefined. Используйте || когда хотите значение по умолчанию для «пустых» значений.
**Неправильно:** Забывать, что + для строк — конкатенация
**Почему:** '5' + 3 → '53' (строка), но '5' - 3 → 2 (число). JavaScriptCastException.
**Правильно:** Проверяйте типы операндов. Если хотя бы один — строка, + будет конкатенацией.
Важно запомнить
- === сравнивает значение И тип, == — только значение
- ?? возвращает правое значение, если левое null/undefined
- || считает 0, '' и false «пустыми», ?? — нет
- && — оба true, || — хотя бы одно true
- Приоритет: () > ** > * / % > + - > === > ! > && || > ?? > =
Связь
Назад: Вы знаете базовые типы данных (J3) — теперь вы умеете с ними работать.
Вперёд: Следующий урок (J5) — структура кода: инструкции, точки с запятой и комментарии.