Наверняка вы не проводили много времени читая официальную документация на сайте mozilla. Поэтому вы легко могли пропустить операторы в языке, которые встречаются в коде не так часто.
Сегодня рассмотрим именно такие примеры, тем более если они не часто встречаются — это не значит, что они вам не пригодятся в работе.
Оператор ??
Данный оператор работает следующим образом:
null ?? 5 // 5
3 ?? 5 // 3
Работает следующим образом, он возвращает первый аргумент, если он не null и не undifiend. Иначе возвращается второй.
Например, с помощью оператора можно присваивать переменные, хотя гораздо чаще для этого можно встретить использование логического "или ||". Но это может привести к багам, которые будет потом непросто найти.
Например:
const a = 1
const b = 0
const c = null
const d = -1
const moneyAmount = (money) => {return money || 'no money'}
moneyAmount(a) // 1
moneyAmount(b) // no money
moneyAmount(c) // no money
moneyAmount(d) // -1
В этом примере гораздо логичнее было бы возвращать 0, если в качестве аргумента в функцию приходит 0, именно с этим нам и поможет "??". Потому что с помощью него во втором примере вернется 0.
Оператор ??=
Данный оператор работает следующим образом - присваивает значение в переменную только если текущее значение переменной равно null или undefined.
Рассмотрим на примере:
let a = null
const b = 1
const c = 2
a ??= b // 1
b ??= c // 1
Более подробно можно почитать в документации.
Оператор ?.
Данный оператор может использоваться для того, чтобы обращаться к свойствам объектов без необходимости проверять родительское свойство. Звучит запутанно, но рассмотрев на примере будет понятнее.
const coordinate = {
property: {
nestedProperty: 1
}
}
const value = coordinate.property1?.nextedProperty // undefined
Таким образом у нас получается избежать TypeError, так как свойства property1 в объекте отсутствует
Чтобы не пропустить последующие статьи - не забывайте подписаться, а чтобы порадовать меня - поставить лайк.