Найти в Дзене
Павлин Шарит

Операторы JavaScript о которых вы не слышали

Оглавление
JavaScript является реализацией стандарта ECMAScript
JavaScript является реализацией стандарта ECMAScript

Наверняка вы не проводили много времени читая официальную документация на сайте 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 в объекте отсутствует

Чтобы не пропустить последующие статьи - не забывайте подписаться, а чтобы порадовать меня - поставить лайк.