if (someObject.member && someObject.member.member &&
someObject.member.member.member && someObject.member.member.member.value) ...
или аналогично:
var val = foo.bar && foo.bar.jim && foo.bar.jim.jam && foo.bar.jim.jam.value;
Это не будет «работать», если какое-либо конкретное значение окажется null
, false
, 0
или ""
(пустая строка), но с возможным исключением окончательного значения, это кажется вряд ли так.
Также обратите внимание, что typeof ____ !== "undefined"
не является правильным тестом, чтобы увидеть, есть ли у объекта свойство. Вместо этого вы должны использовать ___ in object
, например, if ("member" in someObject)
. Это потому, что вы можете установить для свойства явное значение undefined
, которое отличается от удаления его с помощью delete someObject.member
.