JS Core

Операторы

Научиться использовать арифметические, строковые, сравнительные и логические операторы, включая ?? (nullish coalescing).

Начальный (Beginner)
Нужно знать:Типы данных

Кратко

Операторы — это символы, которые выполняют действия со значениями: сложение (+), сравнение (===), логические операции (&&, ||) и особый оператор ?? (nullish coalescing), который выбирает значение, если оно null или undefined.


Подробно

Операторы делятся на категории:

Арифметические: + - * / % (остаток) ** (степень)

Строковые:

  • + конкатенирует строки: 'hello' + ' ' + 'world'

Сравнительные:

  • === строгое сравнение (значение И тип)
  • == нестрогое сравнение (только значение, с приведением типов)
  • > < >= <=

Логические:

  • && И (оба должны быть true)
  • || ИЛИ (хотя бы одно true)
  • ! НЕ (инвертирует)

Nullish coalescing (??):

  • Возвращает правое значение, если левое — null или undefined
  • Отличие от ||: || считает 0, '' и false «пустыми», ?? — нет

Присваивающие: += -= *= /= %= ++ --

Особенности:

  • typeof — определяет тип значения
  • in — проверяет наличие свойства в объекте
  • instanceof — проверяет прототип объекта

Приоритет операторов:

  • () (скобки)
  • ** (степень)
  • * / %
  • + -
  • === !== > < >= <=
  • ! && ||
  • ??
  • = += -= и т.д.

Ментальная модель

Операторы — это как арифметика в школе, только расширенная. + - * / — это база. === — это вопрос «это одинаковые вещи?». && — это «оба условия должны быть выполнены».


Примеры

**Самый простой:**

javascript
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 (остаток от деления)

Базовые арифметические операторы работают как в математике.

**Простой:**

javascript
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. ?? более предсказуем для значений по умолчанию.

**Реальный пример:**

javascript
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) — структура кода: инструкции, точки с запятой и комментарии.

Материалы курса JS Core — PROlab Academy.