Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

410
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda