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

340
Vistas
JS/ES6: Desestructuración de indefinido

Estoy usando algo de desestructuración como esta:

 const { item } = content console.log(item)

Pero, ¿cómo debo manejar content === undefined , que generará un error?

La forma 'antigua' se vería así:

 const item = content && content.item

Entonces, si content no está definido -> item también estará indefinido.

¿Puedo hacer algo similar usando la desestructuración?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Puede usar la evaluación de cortocircuito para proporcionar un valor predeterminado si el content es un valor falso, generalmente undefined o null en este caso.

 const content = undefined const { item } = content || {} console.log(item) // undefined

Una forma menos idiomática ( ver este comentario ) es distribuir el contenido en un objeto antes de desestructurarlo, porque se ignoran los valores null e undefineds .

 const content = undefined const { item } = { ...content } console.log(item) // undefined

Si está desestructurando parámetros de función, puede proporcionar un valor predeterminado ( = {} en el ejemplo).

Nota: El valor predeterminado solo se aplicaría si el parámetro desestructurado no está undefined , lo que significa que la desestructuración de valores null generará un error.

 const getItem = ({ item } = {}) => item console.log(getItem({ item: "thing" })) // "thing" console.log(getItem()) // undefined try { getItem(null) } catch(e) { console.log(e.message) // Error - Cannot destructure property `item` of 'undefined' or 'null'. }

O incluso establezca un valor predeterminado para la propiedad del item si el objeto de entrada no contiene la propiedad

 const getItem = ({ item = "default" } = {}) => item console.log(getItem({ item: "thing" })) // "thing" console.log(getItem({ foo: "bar" })) // "default"

over 4 years ago · Santiago Trujillo Denunciar

0

const { item } = Object(content)
over 4 years ago · Santiago Trujillo Denunciar

0

La desestructuración del objeto anidado es limpia y corta, pero apesta cuando la propiedad de origen es null o no está undefined en el objeto del lado derecho

digamos que tenemos

 const { loading, data: { getPosts }, } = useQuery(FETCH_POSTS_QUERY);

Solución 1 si tenemos objetos de datos pero no getPosts , entonces podemos usar:
(Configuración predeterminada en cada nivel)

 const { loading, data: { getPosts = [] } = { getPosts: [] }, } = useQuery(FETCH_POSTS_QUERY);

Solución 2: si los data del evento no están undefined , entonces:

 const { loading, data: { getPosts } = { getPosts: [] }, } = useQuery(FETCH_POSTS_QUERY);
over 4 years ago · Santiago Trujillo 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