0Pricing
JavaScript Academy · Урок

Оператор объединения с null ??

Задавайте значения по умолчанию только для null и undefined.

«Оператор объединения с null ??» — бесплатный урок JavaScript Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения JavaScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс JavaScript Academy содержит 4 уроков всего.

Значения по умолчанию

Часто требуется использовать резервное значение, если значение отсутствует. Оператор нулевого слияния позволяет аккуратно задавать значения по умолчанию только при необходимости.

const name = undefined;
console.log(name ?? "Guest"); // "Guest"

Оператор ??

Оператор с двумя вопросительными знаками возвращает значение справа только тогда, когда значение слева равно null или undefined.

console.log(null ?? "fallback");      // "fallback"
console.log(undefined ?? "fallback"); // "fallback"
console.log("hi" ?? "fallback");      // "hi"

Почему не следует использовать ||

Логический оператор OR || использует резервное значение при любом ложном значении, включая 0, "" и false, что часто неверно для реальных данных.

console.log(0 || 10);  // 10  (probably unwanted)
console.log(0 ?? 10);  // 0   (keeps the real value)

Случай с пустой строкой

С оператором || намеренно заданная пустая строка заменяется, а с оператором ?? сохраняется, поскольку "" не равно null или undefined.

const note = "";
console.log(note || "none"); // "none"
console.log(note ?? "none"); // ""

Значение false сохраняется

Настоящее значение false сохраняется при использовании ??, но было бы заменено оператором ||.

const enabled = false;
console.log(enabled ?? true); // false
console.log(enabled || true); // true

Безопасное чтение конфигурации

Оператор ?? идеально подходит для настроек, где 0 или пустое значение являются допустимым выбором, который пользователь может сделать намеренно.

function getVolume(settings) {
  return settings.volume ?? 50;
}
console.log(getVolume({ volume: 0 })); // 0

Работа с переменными

Он работает с любыми выражениями и возвращает первый операнд, который не равен null или undefined.

let cached = null;
const value = cached ?? computeValue();
function computeValue() { return 99; }
console.log(value); // 99

Вычисление с коротким замыканием

Как и || и &&, оператор ?? использует короткое замыкание: если значение слева не равно null или undefined, значение справа никогда не вычисляется.

function side() { console.log("called"); return 1; }
const x = "ready" ?? side(); // side() never runs
console.log(x);

Нельзя напрямую смешивать с && или ||

Смешивать ?? с && или || без скобок нельзя: это синтаксическая ошибка, предотвращающая неоднозначность.

const a = true, b = null;
// const c = a || b ?? 1; // SyntaxError
const c = (a || b) ?? 1;
console.log(c);

Параметры функции по умолчанию и ??

Параметры по умолчанию применяются только тогда, когда аргумент равен undefined. Оператор ?? также обрабатывает явно переданное значение null.

function greet(name = "Guest") { return "Hi " + name; }
console.log(greet(null)); // "Hi null"
function greet2(name) { return "Hi " + (name ?? "Guest"); }
console.log(greet2(null)); // "Hi Guest"

Когда что выбирать

Используйте ??, когда допустимые значения 0, "" или false необходимо сохранить. Используйте || только тогда, когда при любом ложном значении нужно применить резервное значение.

const retries = 0;
console.log(retries ?? 3); // 0 kept

Быстрая проверка

Сравните операторы.

Итоги

Оператор ?? возвращает значение справа только тогда, когда значение слева равно null или undefined, сохраняя 0, "" и false. Поэтому для задания значений по умолчанию на реальных данных он безопаснее, чем ||. Он использует короткое замыкание, и его нельзя смешивать с &&/|| без скобок.

Часто задаваемые вопросы

Урок «Оператор объединения с null ??» бесплатный?

Да — полный текст урока «Оператор объединения с null ??» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс JavaScript Academy, подпишись на CoddyKit PRO. Курс JavaScript Academy содержит 4 уроков всего.

Чему я научусь в уроке «Оператор объединения с null ??»?

Задавайте значения по умолчанию только для null и undefined. Ты практикуешь JavaScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать JavaScript Academy?

Предыдущий опыт не требуется. JavaScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Оператор объединения с null ??»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке JavaScript Academy?

Да. Каждый урок JavaScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Необязательная цепочка с оператором ?.
  2. Оператор объединения с null ??
  3. Совместное использование ?. и ??
  4. Необязательные вызовы и доступ по индексу
← Назад к JavaScript Academy