Вебсправочник
Справочник JavaScript

Логические присваивания: условное обновление переменной

Операторы ??=, ||= и &&= присваивают правую часть только при выполнении соответствующего условия для левой.

Назначение

Операторы ??=, ||= и &&= присваивают правую часть только при выполнении соответствующего условия для левой.

Как это работает

??= реагирует на null и undefined, ||= — на ложное значение, &&= — на истинное. Правая часть вычисляется только при необходимости, поэтому побочные действия в ней тоже условны.

Пример

let count=0;
count??=10;
console.assert(count===0);
count||=10;
console.assert(count===10);
let enabled=true;
enabled&&=false;
console.assert(enabled===false);

Что должно получиться

Первое присваивание сохраняет ноль, второе заменяет его, третье меняет истинный флаг на false. Различия отражают условия операторов, а не особый тип переменной.

Граница применения и частая ошибка

Не используйте ||= для числового параметра, где ноль является правильным значением. И не скрывайте сложное действие в правой части, если условное выполнение трудно заметить читателю.

Самостоятельная проверка

Примените три оператора к нулю и булеву флагу. Добавьте функцию в правую часть и посчитайте вызовы, чтобы проверить короткое замыкание.

JavaScript в песочнице этого сайта не выполняется. Перенесите пример в отдельный учебный файл. Сначала проверьте исходный результат, затем измените входные данные; ошибка проверки означает, что результат отличается от ожидаемого.

Самостоятельный учебный материал. Техническая документация: первоисточник по теме ↗. Если результат отличается, проверьте код и версию браузера.