Explica este código JavaScript
Dificultad: Básico
const persons = [
{
surname: 'Zoe',
address: {
street: {
name: 'Sesame Street',
number: '123',
},
},
},
{
surname: 'Mariner',
},
{
surname: 'Carmen',
address: {
},
},
];
const f = (arr) => {
return arr.map((person) => {
return person?.address?.street?.name
})
}
console.log(f(persons)) //?
A. ['Sesame Street', null, null]
B. ['Sesame Street', undefined , undefined]
C. [undefined, undefined, undefined]
D. ['Sesame Street']
Respuesta en el primer comentario.
Top comments (1)
Respuesta:
B.
['Sesame Street', undefined , undefined]
Muchas veces encontraremos que los arreglos de objetos no tienen todas la propiedades, es muy común esto y al momento de accederlas podremos obtener errores.
Una buena manera de solucionar esto es usando el encadenamiento opcional
?.
, de esta manera nos aseguramos que si una propiedad no existe en el objeto, entonces regreseundefined
y no asi un error que destruya la app.La idea aproximada es:
undefined
ninull
, realice la operación después del signo de interrogación.undefined
.Si ejecutamos la función de usando encadenamiento simple:
Obtendremos el siguiente error:
Uncaught TypeError: Cannot read properties of undefined (reading 'street')
Preferible obtener un arreglo de
undefined
que un error que pare la ejecución de la app.