Понимание необязательных цепочек в JavaScript
28 марта 2023 г.Вы пишете код, который должен быстро получать доступ к свойствам или вызывать методы объекта, не беспокоясь о том, что объект или связанные данные имеют значение null или не определены?
Если это так, то вам нужна необязательная цепочка в JavaScript!
Необязательная цепочка — это современная языковая функция, позволяющая безопасно перемещаться по глубоко вложенным свойствам объекта и получать доступ к ним.
Это достигается путем объединения нескольких уровней объекта и заменить потребность в традиционный оператор if
.
Это упрощает извлечение значений из объекта, независимо от того, насколько глубоко они могут быть вложены друг в друга.
Например, предположим, что у вас есть объект address
со свойством street
, вложенным внутрь.
Используя необязательную цепочку, вы можете получить доступ к улице с помощью этого короткого фрагмента кода: address?.street
.
Это попытается найти свойство street
вашего объекта address
, и если он не сможет его найти (если сам адрес не определен), он просто вместо этого вернет значение undefined. выдачи ошибки.
Короче говоря, эта простая в использовании функция позволяет работать с данными более уверенно и эффективно, предоставляя безопасный способ обхода и доступа к глубоко вложенным объектам без ошибок.
Как использовать необязательную цепочку в Javascript
При работе с объектами и массивами в Javascript часто требуется доступ к определенному свойству, которое может существовать, а может и не существовать.
Например, у вас может быть массив, в котором каждый элемент является объектом, содержащим некоторые свойства. Но в каждом объекте вы не знаете, будет ли там свойство, к которому вы хотите получить доступ. В этом случае опциональная цепочка может стать вашим спасением!
Необязательная цепочка позволяет нам упростить наш код, избегая многих проверок, которые нам нужно сделать, чтобы убедиться, что объект имеет определенное свойство перед доступом к нему.
Синтаксис необязательных цепочек прост: используйте вопросительный знак (?), за которым следует точка (.), как между текущим значением, так и следующей частью вашей цепочки.
Это может выглядеть примерно так: object?.property?.nestedProperty
.
Например, предположим, что у нас есть массив с именем states
, содержащий объекты с такими свойствами, как name
и capital
.
Мы могли бы использовать необязательную цепочку для доступа к названию столицы Флориды следующим образом: states[2]?.capital?.name
.
Если либо элемент с индексом 2, либо его капитальное свойство не существует, то вместо выдачи ошибки ничего не будет возвращено, что делает необязательную цепочку отличным способом написания надежного кода без необходимости выполнять все эти проверки вручную!< /p>
Когда использовать необязательную цепочку
Возможно, вам интересно, когда использовать необязательную цепочку в вашем коде.
Ответ таков: каждый раз, когда вам нужно получить доступ к глубоко вложенным объектам, но вы не уверены, будет ли там свойство, к которому вы хотите получить доступ.
Используя необязательную цепочку, вы можете сэкономить время и много строк кода. Вместо того, чтобы выполнять проверки вручную, вы можете использовать эту функцию, чтобы убедиться, что вы безопасно перемещаетесь по свойствам и не сталкиваетесь с ошибками.
Это особенно полезно, когда вы имеете дело с данными, структура которых может отличаться от ожидаемой. Представьте, что вы работаете с каким-то API и данные, которые вы получаете от API не всегда согласован.
В этих случаях вы не знаете наверняка, будет ли там свойство, к которому вы пытаетесь получить доступ, поэтому может пригодиться необязательная цепочка.
Еще одна ситуация, когда вы можете использовать необязательную цепочку, — это когда вы знаете, что ваши данные изменятся, поэтому лучше перестраховаться и использовать эту функцию.
Например, если вы разрабатываете игру, в какой-то момент вам может понадобиться доступ к глубоко вложенным объектам, но вы не знаете, будет ли там ожидаемая структура.
Используя необязательную цепочку, вы можете избежать ошибок и убедиться, что ваш код будет работать в разных условиях.
Независимо от сценария, необязательная цепочка — это мощный инструмент, который может помочь вам писать код более эффективно и безопасно.
Потенциальные подводные камни при использовании необязательных цепочек
Использование необязательных цепочек в вашем коде может упростить чтение, а также обеспечить некоторые дополнительные меры безопасности, но есть несколько потенциальных ловушек, о которых вы должны знать при его использовании.
Скрытие ошибок
Необязательная цепочка может замаскировать ошибку в вашем коде, так как она просто вернет undefined
, а не выдаст ошибку. В результате едва уловимая ошибка может остаться незамеченной, и отладить ее будет сложно в дальнейшем.
Если вы не будете внимательны и усердны при написании кода, опциональная цепочка может скрыть ошибку, которая впоследствии может привести к проблемам в рабочей среде.
Непреднамеренное поведение с null
и undefined
Вы должны знать разницу между null
и undefined
.
Необязательная цепочка вернет undefined
, если какая-либо часть цепочки не определена, но если для одной части цепочки задано значение null
, остальная часть цепочки выиграет. t выполнить, потому что у него нет значения для поиска. Например:
var foo = { bar: undefined }
foo.bar?.baz // returns undefined
foo2 = { bar: null }
foo2.bar?.baz // returns undefined rather than throwing an error
Вы также должны иметь в виду, что, хотя опциональная цепочка отлично смотрится с функция стрелки, она работает только в круглых скобках:
var foo = { bar: () => 'baz' } // does **not** work as expected!
foo?.bar() // returns undefined // does **not
Примеры необязательных цепочек в Javascript
Готовы погрузиться в некоторые примеры, чтобы лучше понять, что происходит? Давайте посмотрим, как необязательная цепочка выглядит в коде JavaScript.
Необязательная цепочка использует синтаксис ?.
, что означает, что ваш код JavaScript может выглядеть примерно так:
user?.post?.comments?.author;
Это будет читать каждую часть выражения до того, как будет получена ошибка, поэтому, если какая-либо часть выражения не определена, она просто вернет значение undefined без выдачи ошибки — что является большим преимуществом!
Другими словами, вместо того, чтобы беспокоиться об этих надоедливых нулевых значениях и писать множество утомительных операторов if, вы можете использовать необязательную цепочку и значительно упростить свой код. Это выглядит так:
let author = user && user.post && user.post.comments && user.post.comments.author;
// same as with Optional Chaining:
let author = user?.post?.comments?.author;
Посмотрите, насколько это проще, чем писать тонны условия if? Это оптимизирует ваш код и значительно снижает вероятность ошибок!
Устранение неполадок с необязательными цепочками в JavaScript
Необязательная цепочка в JavaScript может быть отличным способом упростить ваш код и облегчить отладку, когда что-то пойдет не так.
Но иногда необязательная цепочка может создать больше проблем, чем решить. Вот несколько советов по устранению неполадок с необязательными цепочками в JavaScript.
Проверьте синтаксис
Синтаксис необязательного оператора цепочки отличается от того, что вы обычно пишете в JavaScript, поэтому убедитесь, что вы не делаете ошибок при написании оператора.
Если вы не знакомы с необязательной цепочкой, дважды проверьте синтаксис с другими источниками или руководствами, чтобы убедиться, что все правильно.
Убедитесь, что ваши данные верны
При работе с необязательными цепочками имейте в виду, что если где-то в цепочке есть нулевое значение, будет выдано сообщение об ошибке.
Прежде чем пытаться использовать необязательную цепочку, убедитесь, что ваши данные действительны. Если с вашими данными что-то не так, они не будут работать должным образом.
Используйте необязательную цепочку только при необходимости
При использовании необязательных цепочек в JavaScript всегда тщательно продумывайте, где и когда их использовать — нет необходимости использовать необязательные цепочки, если они действительно не нужны.
Используйте его только тогда, когда это имеет смысл и помогает сделать ваш код более понятным и простым.
Наконец, помните, что если что-то не работает должным образом с необязательным оператором цепочки, вы всегда можете обратиться за помощью или советом к другим разработчикам, у которых есть опыт их использования в своих проектах.
С помощью этих советов и рекомендаций устранение неполадок с необязательными цепочками JavaScript должно стать легкой задачей!
Заключение
Короче говоря, необязательная цепочка – невероятно полезная функция JavaScript, помогающая упростить код. Это краткий синтаксис для доступа к свойствам вложенных объектов, защищающий вас от TypeError, когда эти свойства имеют значение null и не определены. С помощью необязательного оператора цепочки вы можете получить доступ к свойствам глубоко вложенных объектов, не проверяя всю цепочку объектов.
Это отличный инструмент, если вам нужен доступ к свойствам и вы не хотите возиться со всеми проверками и условиями.
Кроме того, его очень легко запомнить и использовать, так что определенно стоит добавить его в свой арсенал популярных приемов кодирования.
Также опубликовано здесь
н
Оригинал