Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

395
Vistas
¿Por qué undefined?.fun() no arroja un error?

Me sorprendió mucho ver el siguiente comportamiento en Node 14.18.0:

 > {}?.fun(); Uncaught TypeError: b?.fun is not a function
 > undefined?.fun(); undefined

Entiendo por qué la primera declaración arroja un TypeError. {}?.fun no está undefined , por lo que no se puede llamar. Pero undefined?.fun también es undefined , entonces, ¿por qué se puede llamar sin lanzar? ¿Qué parte de la especificación ECMAScript define este comportamiento? ¿El grupo de trabajo de ECMAScript proporcionó alguna razón por la que debería funcionar de esta manera?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Durante el encadenamiento opcional, si el valor actual dentro de la cadena es null o undefined , la expresión se cortocircuita con un valor de retorno de undefined .

Esto está en los documentos oficiales :

El ?. El operador es como el . operador de encadenamiento, excepto que en lugar de causar un error si una referencia es nullish ( null o undefined ), la expresión se cortocircuita con un valor de retorno de undefined . Cuando se usa con llamadas a funciones, devuelve undefined si la función dada no existe.

Dado que {} es un objeto real, sin un método llamado fun() , explota porque llamaste a una función que no existía.

Para solucionar su problema, deberá llamar a la función con encadenamiento opcional:

 console.log(({})?.fun?.()); // undefined

about 4 years ago · Juan Pablo Isaza Denunciar

0

¿el trabajo de? y decir que posiblemente el valor es indefinido

normalmente se usa así en mecanografiado

 console.log(myobj?.value ?? 'does not exist');

en javascript "?" es inútil

"?" no hace nada, solo indica que el valor puede no estar definido, por lo que cuando coloca un objeto, devuelve un error porque esta propiedad no existe en su objeto, mientras que en javascript no definido simplemente ignora todo

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda