var street = user.address?.street; var fooValue = myForm.querySelector("input[name=foo]")?.value; obj?.prop; obj?.[expr]; func?.(...args); a?.(); a?.[++x]; a?.b.c(++x).d; a?.b[3].c?.(x).d; a?.b.c; (a?.b).c; a?.b?.c; delete a?.b; a?.b[3].c?.(x).d.e?.f[3].g?.(y).h; (a?.b).c(); (a?.b[c]).c(); a?.b?.c.d?.e; (a ? b : c)?.d; (list || list2)?.length; (list || list2)?.[list || list2]; async function HelloWorld() { var x = (await foo.bar.blah)?.hi; a?.[await b]; (await x)?.(); } a[b?.c].d(); a?.[b?.c].d(); a[b?.c]?.d(); a?.[b?.c]?.d(); one?.fn(); (one?.two).fn(); (one?.two)(); (one?.two())(); one.two?.fn(); (one.two?.three).fn(); one.two?.three?.fn(); one?.(); (one?.())(); one?.()?.(); (one?.()).two; a?.[b ? c : d]; (-1)?.toFixed(); (void fn)?.(); (a && b)?.(); (a ? b : c)?.(); (function () {})?.(); (() => f)?.(); (() => f)?.x; (a?.(x)).x; ( aaaaaaaaaaaaaaaaaaaaaaaa && aaaaaaaaaaaaaaaaaaaaaaaa && aaaaaaaaaaaaaaaaaaaaaaaa )?.(); let f = () => ({}?.()); let g = () => ({}?.b); a = () => ({}?.() && a); a = () => ({}?.()() && a); a = () => ({}?.().b && a); a = () => ({}?.b && a); a = () => ({}?.b() && a); (a) => ({}?.()?.b && 0); (a) => ({}?.b?.b && 0); (x) => ({}?.()()); (x) => ({}?.().b); (x) => ({}?.b()); (x) => ({}?.b.b); ({}?.a().b()); ({ a: 1 }?.entries()); new (foo?.bar)(); new (foo?.bar())(); new (foo?.())();