Spec-Zone.ru › JavaScript

Присваивание с использованием оператора нулевого слияния (??=)

Базовая поддержка Широко доступна

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в версиях браузеров. Она доступна во всех браузерах с сентября 2020 года.

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

Попробуйте

const a = { duration: 50 };

a.speed ??= 25;
console.log(a.speed);
// Expected output: 25

a.duration ??= 10;
console.log(a.duration);
// Expected output: 50

Синтаксис

x ??= y

Описание

Присваивание с использованием оператора нулевого слияния кратковременно срабатывает (short-circuits), что означает, что x ??= y эквивалентно x ?? (x = y), за исключением того, что выражение x вычисляется только один раз.

Присваивание не выполняется, если левая часть не является нулевой, из-за кратковременного срабатывания оператора нулевого слияния. Например, следующее не вызовет ошибку, несмотря на то, что x является const:

const x = 1;
x ??= 2;

Аналогично, следующее не вызовет сеттер:

const x = {
  get value() {
    return 1;
  },
  set value(v) {
    console.log("Setter called");
  },
};

x.value ??= 2;

На самом деле, если x не является нулевым, y вообще не вычисляется.

const x = 1;
x ??= console.log("y evaluated");
// Logs nothing

Примеры

Использование присваивания с оператором нулевого слияния

Вы можете использовать оператор присваивания с нулевым слиянием для применения значений по умолчанию к свойствам объектов. По сравнению с использованием деструктуризации и значений по умолчанию, ??= также применяет значение по умолчанию, если свойство имеет значение null.

function config(options) {
  options.duration ??= 100;
  options.speed ??= 25;
  return options;
}

config({ duration: 125 }); // { duration: 125, speed: 25 }
config({}); // { duration: 100, speed: 25 }

Спецификации

Спецификация
Спецификация языка ECMAScript® 2027
# sec-assignment-operators

Совместимость с браузерами

Desktop Mobile Server
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
nullish_coalescing_assignment
85
85
79
71
14
85
79
60
14
14.0
85
14
1.0.0
1.2
15.0.0

См. также

  • Оператор нулевого слияния (??)
  • Nullish
  • Truthy
  • Falsy

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_assignment

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API