Probé esta sintaxis en VSCode y Coderpad (ambos usan la versión 16.4 de Node).
let x = {} x?.something.foo Según tengo entendido, este código no debería arrojar un error ahora, sino devolver undefined . La función de optional chaining debería estar disponible en Node v14+, pero por alguna razón no funciona en mi VSCode ni en Coderpad.
Pensé por qué?
x es un objeto existente para el que desea permitir que la propiedad something no esté definida. Por lo tanto, la sintaxis correcta debería ser x.something?.foo
La sintaxis x?.something.foo significa: permite que un objeto x no esté definido, pero si no lo está, devuelve el valor de la cadena de propiedad something.foo . Dado que en este caso x está definido, pero x.something no lo está, obtendrá un error (a menos que use x?.something?.foo ).