Логические присваивания: условное обновление переменной
Операторы ??=, ||= и &&= присваивают правую часть только при выполнении соответствующего условия для левой.
Назначение
Операторы ??=, ||= и &&= присваивают правую часть только при выполнении соответствующего условия для левой.
Как это работает
??= реагирует на 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 в песочнице этого сайта не выполняется. Перенесите пример в отдельный учебный файл. Сначала проверьте исходный результат, затем измените входные данные; ошибка проверки означает, что результат отличается от ожидаемого.