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?.())();