This page was translated from English by the community.Learn more and join the MDN Web Docs community.
Присваивание логического ИЛИ (||=)
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since сентябрь 2020 г..
Оператор присваивания логического ИЛИ (x ||= y) присваивает значение переменнойx только в случае, если её текущее значениеложноподобно.
In this article
Интерактивный пример
const a = { duration: 50, title: "" };a.duration ||= 10;console.log(a.duration);// Expected output: 50a.title ||= "title is empty.";console.log(a.title);// Expected output: "title is empty."Синтаксис
expr1 ||= expr2;Описание
>Сокращённое вычисление
Операторлогического ИЛИ работает следующим образом:
x || y;// возвращает x, если x истинноподобен// возвращает y, если x не истинноподобенОператор логического ИЛИ OR производит вычисление по сокращённой схеме: второй операнд будет вычисляться только в случае, если при вычислении первого операнда не удалось получить значение.
Оператор присваивания логического ИЛИ также поддерживает сокращённое вычисление, т.е. выполнит операцию присваивания только при вычислении правого выражения. Проще говоря,x ||= y эквивалентно следующему коду:
x || (x = y);В отличие от следующего примера, где операция присваивания произойдёт в любом случае:
x = x || y;Обратите внимание, что математические и побитовые операторы присваивания работают по-разному.
Примеры
>Определение значения по умолчанию
Если в элементе с идентификатором "lyrics" нет содержимого, то следующее выражение вставит в него надпись:
document.getElementById("lyrics").textContent ||= "Нет слов.";В данном примере сокращённое вычисление очень сильно выручает, поскольку элемент будет обновляться только при необходимости, что позволит избежать подобных эффектов вроде ненужного рендеринга, потери фокуса и т.д.
Примечание: обратите внимание на значение в левом операнде. Если это пустая строка (ложноподобное значение), то должно использовать оператор||=, в противном случае — оператор??= (если ожидается получение значенияnull илиundefined).
Спецификации
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-assignment-operators> |