Итак, есть вопросы по поводу С.О. ответьте, как проверить, существует ли свойство на объекте. Example Ответ заключается в использовании Object.prototype.hasOwnProperty()
.Как проверить, существует ли свойство в потенциально неопределенном объекте?
Однако, как бы вы проверили свойство потенциально неопределенного объекта?
Если кто-то попытается просто проверить, существует ли свойство на неопределенном объекте, то это будет контрольная ошибка.
Семантически, лучше проверить код непосредственно if (obj.prop) //dosomething
- он показывает более четкое намерение. Есть ли способ достичь этого? Предпочтительно, есть ли встроенный Javascript-метод для выполнения такой вещи или по соглашению?
Мотив: Пакет добавляет свойство user.session.email - но я проверяю, существует ли почта, а не сеанс, хотя сеанс может быть несуществующим.
Update: Многие из ответов говорят, чтобы использовать оператор в & & короткого замыкания. Я знаю, что это возможное решение, но это не совсем то, что нужно, поскольку кажется, что мы работаем над внешним синтаксисом объекта JS - то есть, хотя вы хотите действительно проверить свойство на объекте, вам нужно проверить, существует ли объект для этого.
Примечание для маркировки закрыто Почему это обозначение закрыто? Ссылка, которая предполагает, что это дубликат, может не дать одинаковых ответов. Мы ищем лучшее семантическое решение и отмечаем это закрытое предположение «вложенное» === «потенциально неопределенное»?
Это не будет синтаксическая ошибка, это будет ReferenceError. Вы можете проверить 'obj && obj.prop'. – Xufox
Является ли переменная 'obj' определенно существовать, но может иметь значение' undefined'? Кстати, тестирование 'if (obj.prop)' не проверяет, существует ли свойство, оно проверяет, существует ли свойство * и * имеет правдивое значение. – nnnnnn
Ah - заданное описание вопроса, но вопрос по-прежнему остается в силе, потому что вы по существу проверяете, существуют ли как объект, так и свойство, когда я только пытаюсь проверить, существует ли свойство. – steviejay