porque al ejecutar mi codigo console.log(sumar(string, canciones)) y console.log(sumar(numeros, x))se suman las respuestas de la console.log anterior?
este es mi codigo:
const string = true;
const numeros = false;
let sumaStrings = '';
let sumaNumeros = 0;
const array4 = ['Lunes ', 'Martes ', 'Miercoles ', 'Jueves ', 'Viernes ', 'Sabado ', 'Domingo'];
const array3 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 ];
const array = [1, 2, 3, 4, 5, 6, 7];
const array2 = [2, 4, 6, 8, 10];
const canciones = ['Leave the Door open, ', 'Chunky, ', 'Asi es la vida, ', 'Devuelveme a mi chica, ', 'Levitating, '];
const x = [10, 20, 30, 43, 45 ];
function sumar(TipoDeSuma, a) {
if (TipoDeSuma === string) {
for (let i = 0; i < a.length; i += 1) {
sumaStrings += a[i];
}
return (`${sumaStrings}`);
// eslint-disable-next-line no-else-return
} else if (TipoDeSuma === numeros) {
for (let i = 0; i < a.length; i += 1) {
sumaNumeros += a[i];
}
return (`numeros -> ${sumaNumeros}`);
} else {
return 'identifique el tipo de variable';
}
}
console.log(sumar(numeros, array));
// 28
console.log(sumar(numeros, array2));
// 58
console.log(sumar(numeros, array3));
// 163
console.log(sumar(numeros, x));
// 148
console.log(sumar(string, array4));
// Lunes Martes Miercoles Jueves Viernes Sabado Domingo
console.log(sumar(string, canciones));
// Leave the Door open, Chunky, Asi es la vida, Devuelveme a mi chica, Levitating
El problema está en la inicialización de las variables 'sumaNumeros' y 'sumaStrings', estas deben ser inicializadas dentro de la función, porque allí donde están ahora (variables globales) sólo arrancarán desde cero cuando se ejecute la función 'sumar' por primera vez; para la segunda vez tanto 'sumaNumeros', como 'sumaStrings' tendrán almacenados los valores de la última ejecución y se acumularán a los nuevos.
Saludos.
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)