Логическое нулевое присваивание (??=)
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2020.
Оператор логического нулевого присваивания (x ??= y
) присваивает значение переменной x
, если она содержит похожее на null значение (null
или undefined
).
Интерактивный пример
Синтаксис
x ??= y
Описание
Сокращённое вычисление
Оператор нулевого слияния вычисляется слева направо, делая возможным сокращённое вычисление выражения, согласно следующему правилу:
(выражение без null или undefined) ?? следующее выражение
останавливает вычисление на левом выражении, если его результат отличен от null
или undefined
.
Сокращённое вычисление означает, что следующее выражение
не будет вычислено, соответственно не будет никаких последствий, связанных с ним (например, если следующее выражение
содержит вызов функции, то он никогда не произойдёт).
Логическое нулевое присваивание также поддерживает сокращённое вычисление, поэтому x ??= y
по сути то же самое, что и выражение ниже:
x ?? (x = y);
В отличие от следующего примера, где операция присваивания произойдёт вне зависимости от результата вычисления:
x = x ?? y;
Примеры
Использование логического нулевого присваивания
function config(options) {
options.duration ??= 100;
options.speed ??= 25;
return options;
}
config({ duration: 125 }); // { duration: 125, speed: 25 }
config({}); // { duration: 100, speed: 25 }
Спецификации
Specification |
---|
ECMAScript Language Specification # sec-assignment-operators |
Совместимость с браузерами
BCD tables only load in the browser