В этом руководстве вы узнаете о логических операторах присваивания JavaScript, включая оператор OR( ||=
), оператор AND( &&=
) и нулевой оператор присваивания( ??=
).
ES2021 представляет 3 логических оператора присваивания, в том числе:
- Логический оператор OR(
||=
) - Логический оператор AND(
&&=
) - Нулевой объединяющий оператор (
??=
)
OR
Логический оператор присваивания OR( ||=
) принимает два операнда и присваивает правый операнд левому операнду, если левый операнд ложен:
x ||= y
В этом синтаксисе оператор ||=
присваивает y
значению x
только в том случае, если x
является ложным. Например:
let title; title ||= 'untitled'; console.log(title);
Выход:
untitled
В этом примере переменная title
не undefined
, следовательно, она ложна. Поскольку title
является ложным, оператор ||=
присваивает заголовку 'untitled'
title
Вывод показывает untitled
, как и ожидалось.
Пример:
let title = 'JavaScript Awesome'; title ||= 'untitled'; console.log(title);
Выход:
'JavaScript Awesome'
В этом примере title
'JavaScript Awesome'
поэтому он соответствует действительности. Таким образом, логический оператор присваивания OR( ||=
) не присваивает строку 'untitled'
переменной title
.
Логический оператор присваивания OR:
x ||= y
Эквивалентен следующему оператору, в котором используется логический оператор OR:
x ||(x = y)
Как и логический оператор OR, логический оператор присваивания OR также вычисляет по короткой схеме. Это означает, что логический оператор присваивания OR выполняет присваивание только тогда, когда x
является ложным.
В следующем примере оператор используется для отображения сообщения по умолчанию, если элемент результата поиска пуст:
document.querySelector('.search-result').textContent ||= 'Sorry! No result found';
AND
Логический оператор присваивания AND присваивает y
значению x
только в том случае, если x
является истинным:
x &&= y;
Логический оператор присваивания AND также вычисляет по короткой схеме. Это означает, что
x &&= y;
Эквивалентно:
x &&(x = y);
В следующем примере используется логический оператор присваивания AND для изменения фамилии объекта- person
, если эта фамилия правдива:
let person = { firstName: 'Jane', lastName: 'Doe', }; person.lastName &&= 'Smith'; console.log(person);
Выход:
{firstName: 'Jane', lastName: 'Smith'}
Нулевой объединяющий оператор
Нулевой оператор присваивания слияния присваивает y
только x
, если x
имеет значение null
или undefined
:
x ??= y;
Это эквивалентно следующему оператору, в котором используется нулевой оператор объединения:
x ??(x = y);
В следующем примере используется нулевой оператор присваивания для добавления отсутствующего свойства к объекту:
let user = { username: 'Satoshi' }; user.nickname ? ?='anonymous'; console.log(user);
Выход:
{username: 'Satoshi', nickname:'anonymous'}
В этом примере user.nickname
undefined
, следовательно, он нулевой. Нулевой оператор присваивания присваивает строку 'anonymous'
user.nickname
.
Заключение
- Логический оператор присваивания OR(
x ||= y
) присваиваетy
толькоx
, еслиx
является ложным. - Логический оператор присваивания AND(
x &&= y
) присваиваетy
толькоx
, еслиx
является истинным. - Оператор нулевого объединения присваивания(
x ??= y
) присваиваетy
толькоx
, еслиx
является нулевым.