Позвольте представить вам еще одну новую функцию JavaScript Необязательная цепочка(?.).

С помощью дополнительной цепочки вы можете быстро найти «нулевые» или «неопределенные» значения. Но прежде чем углубляться, давайте посмотрим, каково официальное определение опциональной цепочки.

Оператор необязательная цепочка (?.) позволяет вам считывать значение свойства, расположенного глубоко внутри цепочки связанных объектов, без необходимости проверять правильность каждой ссылки в цепочке.

Теперь мы знаем, что это за определение (как будто вас это волнует), теперь мы можем погрузиться в код.

Допустим, у нас есть объект «пользователь», который состоит из некоторых методов и свойств.

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

Например, чтобы получить доступ к улице, user.address.cityвыдаст вам«где-то». Достаточно справедливо, но все становится интереснее, когда вы хотите получить доступ к чему-то, чего нет, или вы не уверены, присутствует ли «город» на объекте или нет.

Давайте предположим случай, только в указанном выше объекте, если мы выполним
console.log(user.company), это даст нам“ undefined” и если мы попробуем
console.log(user.company.address), это выдаст нам очень известную ошибку .

Uncaught TypeError: Не удается прочитать адрес свойства неопределенного

И совершенно очевидно, что «user.company» не определено, и повторный доступ к чему-то, что уже не определено, обязательно вызовет ошибку.

Поэтому, чтобы справиться с этим, мы делаем несколько длинных условий для противодействия ошибке. Нравится,

Теперь появится консоль → «Адрес компании не указан»

Дополнительная цепочка для спасения

Предупреждение о странном синтаксисе

Вместо того, чтобы выполнять длинные условия, как описано выше, мы можем при желании связать свойства, чтобы проверить, присутствуют они или нет. Как показано ниже.

Как я уже говорил ранее, у него какой-то странный синтаксис (?.)
Использование «?». цепочка, если следующее свойство доступно или нет, может помочь вам написать очень чистый код.

Результат приведенного выше console.log будет просто "undefined" или вернет значение, если связанное свойство присутствует или нет.

Хорошая вещь в том, что это справедливо не только для свойств, мы можем связать их, чтобы проверить, присутствует ли какое-то свойство или нет. Например, используя вышеприведенный объект «пользователь». Если мы сделаем

Он вернет «john», потому что john присутствует. Но если мы попытаемся получить доступ к любому методу, которого нет даже в «пользовательском» объекте. Мы получаем ошибку, давайте посмотрим.

Без дополнительной цепочки.

Это немедленно вызовет ошибку.
Uncaught TypeError: user.methodNotPresentInObject не является функцией.
Это потому, что этот метод даже не присутствует в Object .

С дополнительной цепочкой.

Это не нарушит код и просто вернет «undefined».

Аналогичным образом мы можем сделать это и с массивом. Нравится,

Это вернет мне значение, присутствующее в 0-й позиции, то есть «js», а если массива нет, он просто вернет «undefined», как и в других случаях.

Ключевые Takeaway и моменты, чтобы помнить.

Это всего лишь небольшая разница в синтаксисе (?.), которая активирует опциональную цепочку в вашем коде.
Кроме того, Internet Explorer не поддерживает это, поэтому вам придется полагаться на предыдущие методы. Для получения дополнительной информации об этом вы всегда можете обратиться к документам MDN.



Если вам понравилась эта статья, посетите другую мою статью о подъеме, в которой объясняется все, что вам нужно знать об этом.