Sigo viendo funciones que se ven así en una base de código en la que estoy trabajando:
const func = ({ param1, param2 }) => {
//do stuff
}
¿Qué está haciendo exactamente esto? Me está costando encontrarlo en Google, porque ni siquiera estoy seguro de cómo se llama, o cómo describirlo en una búsqueda de Google.
javascript
ecmascript-6
Nathan
fuente
fuente
Respuestas:
Es desestructurante , pero está contenido dentro de los parámetros. El equivalente sin la desestructuración sería:
fuente
Esto es pasar un objeto como propiedad.
Es básicamente una abreviatura de
Otra forma de utilizar esta técnica sin parámetros es la siguiente, consideremos entonces por un segundo que someObject sí contiene esas propiedades.
fuente
Es una asignación de desestructuración de objetos. Como yo, puede que le haya resultado sorprendente porque la sintaxis de desestructuración de objetos de ES6 se parece, pero NO se comporta como una construcción literal de objetos.
Admite la forma muy concisa con la que se encontró, además de cambiar el nombre de los campos y los argumentos predeterminados:
Esencialmente, es {oldkeyname: newkeyname = defaultvalue, ...}. ':' NO es el separador clave / valor; '=' es.
Algunas consecuencias de esta decisión de diseño del lenguaje es que es posible que deba hacer cosas como
Los paréntesis adicionales evitan que las llaves izquierdas se analicen como un bloque, y el punto y coma al principio evita que los paréntesis se analicen como una llamada de función a una función en la línea anterior.
Para obtener más información, consulte: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment
Tenga cuidado, los errores clave durante la asignación de desestructuración de objetos NO se lanzan; simplemente termina con valores "indefinidos", ya sea un error clave o algún otro error que se propagó silenciosamente como "indefinido".
fuente