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

81
Vistas
El encadenamiento opcional en JavaScript devuelve indefinido en lugar de nulo cuando la variable que se probará es nula

Entonces, estoy leyendo el encadenamiento opcional en JavaScript y me surge una pregunta.

Considere el siguiente código:

 let person = null let street = person?.street // returns undefined

Mi pregunta es que, si la variable person es null para empezar, ¿por qué se está haciendo un resultado de encadenamiento opcional para establecer la variable como undefined y no null ?

Si la persona no estaba undefined , entonces supongo que, para mí, establecerla en undefined es razonable porque la variable, por supuesto, no está undefined , como la siguiente:

 let person let street = person?.street // returns undefined

PD: Lo siento si esta es una pregunta estúpida, la eliminaré si alguien está de acuerdo. :)

PPS: si esta pregunta está duplicada, suelte el enlace y lo intentaré. Muchísimas gracias.

about 4 years ago · Santiago Gelvez
3 Respuestas
Responde la pregunta

0

Una cadena opcional no se evalúa como el valor nulo en el que se accedió a la propiedad, sino como undefined , al igual que obtienes undefined cuando una propiedad no existe en un objeto.

Conceptualmente, ¿piense en person?.street no como

 person && person.street

sino más bien como

 (person ?? {}).street

Aunque con precisión (especialmente cuando se encadena más, ya que provoca un cortocircuito en lugar de evaluar el resto de la cadena) es realmente

 person != null ? person.street : undefined

Consulte también las preguntas frecuentes sobre la propuesta de encadenamiento opcional :

¿Por qué (null)?.b se evalúa como undefined en lugar de null ?

Ni ab ni a?.b pretenden preservar información arbitraria sobre el objeto base a , sino solo brindar información sobre la propiedad "b" de ese objeto. Si una propiedad "b" está ausente de a , esto se refleja en ab === undefined y a?.b === undefined .

En particular, se considera que el valor null no tiene propiedades; por lo tanto, (null)?.b no está undefined .

about 4 years ago · Santiago Gelvez Denunciar

0

La razón por la que el resultado no está undefined y no es null se debe al encadenamiento opcional ( ?. ).


Si el encadenamiento opcional no estuviera disponible, su código habría resultado en un error, diciendo que null no tiene propiedades.

 const person = null; person.street // ERROR!

Pero, dado que tiene un encadenamiento opcional, solo da como resultado undefined .

 const person = null; person?.street // undefined

Esta es la razón por la que el encadenamiento opcional da como resultado undefined (si el valor es null o undefined ); para evitar arrojar un error!

¡Espero que esto haya respondido a tu pregunta!

about 4 years ago · Santiago Gelvez Denunciar

0

Lea el manual sobre el encadenamiento opcional .

Los ?. 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 indefinido si la función dada no existe.

about 4 years ago · Santiago Gelvez 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