"use strict"; const obj = { a: { b: { c: { d: 2, }, }, }, }; const a = obj?.a; expect(a).toBe(obj.a); const b = obj?.a?.b; expect(b).toBe(obj.a.b); const bad = obj?.b?.b; expect(bad).toBeUndefined(); let val; val = obj?.a?.b; expect(val).toBe(obj.a.b); expect(() => { const bad = obj?.b.b; }).toThrow();