Spec-Zone.ru › JavaScript

Присваивание с логическим ИЛИ (||=)

Базовый уровень Широко доступно

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

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

Попробуйте

const a = { duration: 50, title: "" };

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

a.title ||= "title is empty.";
console.log(a.title);
// Expected output: "title is empty."

Синтаксис

x ||= y

Описание

Присваивание с логическим ИЛИ кратко замыкает, что означает, что 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

Примеры

Установка содержимого по умолчанию

Если элемент "lyrics" пуст, отобразите значение по умолчанию:

document.getElementById("lyrics").textContent ||= "No lyrics.";

Здесь краткое замыкание особенно выгодно, поскольку элемент не будет обновляться без необходимости и не вызовет нежелательных побочных эффектов, таких как дополнительная работа по разбору или отрисовке, потеря фокуса и т. д.

Примечание: Обратите внимание на значение, возвращаемое API, которое вы проверяете. Если возвращается пустая строка ( ложное значение), необходимо использовать ||=, чтобы вместо пустого места отображалось "No lyrics.". Однако, если API возвращает null или undefined в случае пустого содержимого, вместо этого следует использовать ??=.

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

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

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

Настольные Мобильные Сервер
Chrome Edge Firefox Opera Safari Chrome Android Firefox Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
logical_or_assignment
85
85
79
71
14
85
79
60
14
14.0
85
14
1.0.0
1.2
15.0.0

См. также

  • Логическое ИЛИ (||)
  • Оператор объединения с null (??)
  • Присваивание с побитовым ИЛИ (|=)
  • Истинные значения
  • Ложные значения

© 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/Logical_OR_assignment

Spec-Zone.ru

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