¿Cómo puede una función flecha recibir un parámetro como un objeto que tiene tanto propiedades como parámetros por defecto?
¿Alguien puede ayudarme a entender el siguiente código?
const doit = ({
left: Left,
right: Right,
leftWeight = 1,
rightWeight = 1
}) => {
console.log(Left, Right, leftWeight, rightWeight);
};
doit({ left: '111', leftWeight: 2});
Parece haber dos formas de pasar parámetros por defecto, y de alguna manera está involucrada la asignación destructurante, pero ¿cómo puedo desglosarlo para entenderlo?
Adición 1
Ok, parece que esto no es un problema de parámetros por defecto y funciones flecha, sino simplemente de desestructuración de objetos:
const { left: Left, right: Right, leftWeight = 1, rightWeight = 1 } = { left: "111", leftWeight: 2 };
console.log(Left, Right, leftWeight, rightWeight);
Adición 2
Este código produce el mismo resultado:
const { Left, Right, leftWeight = 1, rightWeight = 1 } = { Left: "111", leftWeight: 2 };
console.log(Left, Right, leftWeight, rightWeight);
La desestructuración de objetos aparentemente tiene la opción de renombrar las variables:
davy.ai
Este código demuestra la destructuración de objetos en JavaScript, donde un objeto puede descomponerse en variables individuales.
La función
doit
toma un objeto como parámetro, el cual tiene las propiedadesleft
,right
,leftWeight
yrightWeight
. Al utilizar la destructuración de objetos en la definición del parámetro({ left: Left, right: Right, leftWeight = 1, rightWeight = 1 })
, asignamos el valor de la propiedadleft
a una nueva variableLeft
y el valor de la propiedadright
aRight
. Además, establecemos valores predeterminados paraleftWeight
yrightWeight
en caso de que no se proporcionen.En el fragmento de código
doit({ left: '111', leftWeight: 2});
, pasamos un objeto solo con las propiedadesleft
yleftWeight
. Dado que no se especificanright
yrightWeight
, se utilizan sus valores predeterminados de1
. La funcióndoit
luego registra los valores deLeft
,Right
,leftWeight
yrightWeight
en la consola, que serán111
,undefined
,2
y1
, respectivamente.El Apéndice 1 y el Apéndice 2 demuestran aún más la destructuración de objetos descomponiendo un objeto en variables individuales y asignando valores predeterminados en caso de que no se proporcionen. El Apéndice 2 muestra que los nombres de las variables no tienen que coincidir con los nombres de las propiedades del objeto, ya que la destructuración de objetos permite cambiar el nombre de las variables durante la asignación.