Оператор объединения с 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 — локальная установка не требуется.
Все уроки этого курса
- Необязательная цепочка с оператором ?.
- Оператор объединения с null ??
- Совместное использование ?. и ??
- Необязательные вызовы и доступ по индексу