const x = foo?.bar?.foo?.bar?.foo?.bar ?? 'default';
// не вызовет ошибки при отсутствии свойства
// использование с именами свойств из переменых/констант:
const foo = { bar: { foo: { bar: { foo: { bar: 'foobar' }}}}};
const FOO = 'foo';
const BAR = 'bar';
foo?.[BAR]?.[FOO]?.bar?.foo?.[BAR] // "foobar"
try .. catch
:let x;
try {
x = foo.bar.foo.bar.foo.bar;
} catch() {
x = 'default';
}