Перевод: Aaron Goldsmith — Logical Assignment Operators
Javascript (ES2021) теперь поддерживает возможность комбинировать логические операции и операцию присваивания с помощью новых операторов &&=, ||= и ??=. Ранее составные операторы присваивания были возможны только с математическими и побитовыми операциями.
&&=
Оператор логического И (AND) присваивания x &&= y выполняет присваивание, только если x истинно. Например:
let a = 1; let b = 0; a &&= 2; console.log(a); // output: 2 b &&= 2; console.log(b); // output: 0
Если левое выражение является ложным, то правое выражение не оценивается, поэтому значение b не переопределено, так как 0 является ложным.
a &&= 2 эквивалентно a && (a = 2), значение a переназначено, потому что оно изначально было истинным.
||=
Оператор логического ИЛИ (OR) x ||= y присваивает, только если x является ложным.
const a = 50; const b = ''; a ||= 10; console.log(a); // output: 50 b ||= 'string is empty.'; console.log(b); // output: "string is empty."
В приведенном выше примере a ||= 10 эквивалентно a || (a = 10), но поскольку значение a истинно, то правое значение не будет присвоено левому оператору
Если вы делаете проверку на ложное значение, таких типов данных как пустая строка или 0, необходимо использовать ||=, в противном случае для проверки значений null или undefined
следует использовать логический оператор ?? =.
??=
Оператор логического нулевого присваивания x ?? = y назначает, только если x имеет значение null или undefined.
const a = { limt: 50 }; a.limit ??= 10; console.log(a.limit); // output: 50 a.speed ??= 25; console.log(a.speed); // output: 25
Логическое нулевое выражение переназначает левое выражение, если левая часть является null
, или undefined.
В приведенном выше примере переназначение a.limit не выполняется, потому что его значение определено как 50, что не является null
или undefined.
Но a.speed первоначально будет иметь значение undefined, поэтому оценивается правое выражение, которое эквивалентно a.speed = 25, то есть конечный результат будет a = {limit: 50, speed: 25}.
Краткий перевод: https://vuejs.org/guide/components/v-model.html Основное использование v-model используется для реализации двусторонней привязки в компоненте. Начиная с Vue…
Сегодня мы рады объявить о выпуске Vue 3.4 «🏀 Slam Dunk»! Этот выпуск включает в…
Vue.js — это универсальный и адаптируемый фреймворк. Благодаря своей отличительной архитектуре и системе реактивности Vue…
Недавно, у меня истек сертификат и пришлось заказывать новый и затем устанавливать на хостинг с…
Каким бы ни было ваше мнение о JavaScript, но всем известно, что работа с датами…
Все, кто следит за последними событиями в мире адаптивного дизайна, согласятся, что введение контейнерных запросов…
View Comments
Интересное присвоение, когда переменная является константой...