JavaScript — самый популярный язык в наши дни. Популярность языка растет в последние пять лет. Одно из улучшений кода за последние двенадцать месяцев: Необязательная цепочка (?.)
Я хочу использовать простой объект JavaScript, чтобы представить преимущества Необязательная цепочка (?.).
const developer = { firstName: 'Dimitar', lastName: 'Danailov', age: 32, }
developer.firstName
имеет значение, равное Dimitar
developer.lastName
имеет значение, равное Danailov
developer.age
имеет значение, равное 32
Что произойдет, если кто-то получит доступ: developer.name
. Оператор .
вернет: undefined
Если кто-то получит доступ: developer.name.firstName
: .
оператор выдаст ошибку:
VM651:1 Uncaught TypeError: Cannot read property 'firstName' of undefined
Примечание автора.Я работаю разработчиком JavaScript с 2008 года. Ошибки оператора .
– одни из самых распространенных ошибок в рабочей среде.
Эти ошибки являются основной причиной: Необязательная цепочка (?.
) должна быть добавлена как функция. Возьмем тот же пример. developer?.name
снова вернется: undefined
developer?.name?.firstName
вернется undefined
Необязательная цепочка (?.) может быть использована, если мы хотим получить доступ
- Имя свойства объекта (
obj?.prop
) - Выражение объекта (
obj?.[expr]
) - Индекс массива (
arr?.[index]
) - Функция (
func?.(args)
)
Поддержка браузера / Могу ли я использовать
Лучший источник: https://caniuse.com/#feat=mdn-javascript_operators_Optional_chaining
Июль 2020 г.: оператор поддерживается последними версиями браузеров. Если вашему приложению требуется поддержка других версий браузера, добавьте: @babel/plugin-syntax-optional-chaining
Настройка установки такова:
npm install --save-dev @babel/plugin-syntax-optional-chaining
Пожалуйста, обновите конфигурации плагинов babel:
{ "plugins": ["@babel/plugin-syntax-optional-chaining"] }
Вывод:
Серебряной пули не существует!!! У каждого оператора есть преимущества и недостатки. Если вы начинающий разработчик: первый вопрос должен быть таким: Нужно ли вам использовать необязательное связывание (?.). Необязательный оператор цепочки (?.) может создать более сложную проблему для отладки!!!
Если ваша должность: старший разработчик, руководитель группы и архитектор программного обеспечения: вы должны четко указать, когда и как: Можно использовать необязательную цепочку (?.)!