Что означает знак вопроса в строке comment?.author
Для чего ставится знак вопроса перед точкой при обращении к свойству объекта?
3 года назад
Ivan Gagarinov
Ответы
Этот оператор называется "оператор опциональной последовательности". Он позволяет обращаться в нутренним свойствам объекта, без риска что родительское свойство отсутствует в объекте. Чтобы лучше это понять, разберем пример.
Предположим у нас есть сущности пользователей с их адресами в виде объектов по типу:
Предположим мы хотим сформировать строку содержащую страну и город пользователя Russia, Perm
. Для этого мы просто обращаемся к внутренним ключам объекта в ключе address
:
Но что если у нас будет пользователь с отсутствующим адресом? Такой код выдаст ошибку, потому что мы попытались обратиться к свойствам country
и city
у значения undefined
:
У объекта user
нет свойства address
, поэтому мы не можем к обратиться к нему. Чтобы избежать такой ошибки, используется оператор опциональной последовательности: добавляется знак вопроса после свойства, которого может не быть в объекте. Такой код уже не выдаст ошибку:
Не смотря на то, что это удобный инструмент, бездумно его использовать не стоит. Обычно его использование говорит о том, что в приложении есть проблемы. Например, в примере выше, должна стоять проверка на существование адреса пользователя. Если адреса нет, то нет смысла составлять строку. Если добавить такую проверку, то необходимость в использовании этого оператора отпадает.
3 года назад
Ivan Gagarinov
Подробнее о том, когда лучше отказаться от использования ?.
оператора:
-
Когда необходимо явно обработать отсутствие значения. Например, если мы ожидаем, что свойство объекта будет иметь определенное значение, и если его нет, то нужно выполнить какие-то дополнительные действия.
-
Когда нужно обеспечить совместимость с более старыми версиями JavaScript. Оператор опциональной последовательности был добавлен в ECMAScript 2020, поэтому его использование может привести к проблемам совместимости с более старыми браузерами или средами выполнения JavaScript.
-
Когда нужно улучшить читаемость кода. Иногда использование оператора опциональной последовательности может усложнить чтение кода, особенно если он содержит множество вложенных свойств и методов.
2 года назад
Aleksey