Necesito ayuda, estoy atascado! me dan
function counter(){}y leí algunos materiales y logré llegar a esto
function counter(){ var currentValue = 0; var increment = function(val){ currentValue += val; console.log(currentValue); }no funciona y todavía no entiendo al 100% los cierres. Me gustaría saber qué se necesita en el código y cómo funcionó. ¡Gracias!
La idea básica es que cree una función interna que capture la variable local y luego devuelva esa función a la persona que llama, quien la llamará:
function counter(){ var currentValue = 0; return function(val){ currentValue += val; return currentValue; } } // create a counter and increment by one let c = counter() console.log(c(1)) console.log(c(1)) console.log(c(1)) // create a new counter and increment it by 2 let e = counter() console.log(e(2)) console.log(e(2)) console.log(e(2))parece que cada vez que ejecuta la función, está actualizando la variable currentValue a 0 . Una solución simple sería definir la variable currentValue como una variable global como esta:
var currentValue = 0; function counter(val) { //where val is a number and the number you want your counter to change by currentValue += val; console.log(currentValue); } }Tal vez este código es necesario
function counter(){ var currentValue = 0; return function(val){ currentValue += val; return currentValue; } } var c = counter(); console.log(c(10)); console.log(c(20));