Explica este código JavaScript
const value = { number: 10 };
const multiply = (x = { ...value }) => {
console.log((x.number *= 2));
};
multiply();
multiply();
multiply(value);
multiply(value);
- A:
20
,40
,80
,160
- B:
20
,40
,20
,40
- C:
20
,20
,20
,40
- D:
NaN
,NaN
,20
,40
Respuesta en el primer comentario.
Top comments (3)
Respuesta
C:
20
,20
,20
,40
Hay que concentrarse en el orden en que se llaman las funciones para comprender que es lo que pasa acá.
Primera llamada:
A
multiply
no le pasamos ningún parámetro, por ende, toma el parámetro por defectox
que es un objeto desestructurado cuya keynumber
tiene el valor de10
. Entoncesx.number *= 2
nos retorna20
.Segunda llamada:
Similar a la primera llamada, hacemos lo mismo, entonces obtenemos nuevamente
20
.Tercera llamada:
A
multiply
en su llamada le pasamos el argumentovalue
por lo que la función ahora ignora el parámetro por defecto.number
es nuevamente10
, por ello el resultado de la multiplicación nuevamente será20
.Cuarta llamada:
Similar a la tercera llamada, pero el valor de
value
actual es20
que fue el resultado de la tercera llamada, entonces ahorax.number *= 2
, será40
.fernando te estoy siguiendo porque ahorita aprendo espanol. Va a estar interesante leyendo articulos sobre el codigo en Espanol
Muchas gracias por tu comentario! Espero que mis posts te sirvan o ayuden. Un saludo!