В этом руководстве вы узнаете о логических операторах присваивания 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является нулевым.
