
Johan Echeverri
PreguntaPor que cada vez que invocamos la funcion con un nuevo argumento el valor de la variable saveCoins no regresa a 0?
es como si el navegador omitiera la lectura de esa linea la segunda vez que invocamos la función
const moneyBox = (coins) => { debugger var saveCoins = 0; const countCoins = (coins) => { debugger saveCoins += coins; console.log(`MoneyBox $${saveCoins}`); }; return countCoins; } let myMoneyBox = moneyBox();

Pablo Antipan Quiñenao
Brutal el vid! Muchas gracias!!

Didier Ricardo Irias Méndez
Al crear un nuevo contexto de ejecucíon (scope), js crear un entorno léxico que guarda las variables con sus valores anteriores (la magia del closure).
No tiene que ver con
var
let
Acá lo explican bastante bien: https://www.youtube.com/watch?v=JXG_gQ0OF74

Sergio Andrés Bolaños Penagos
Creo que te entendí, te refieres a que la línea 3 no se ejecuta al invocar la otra función? Si recuerdas eso tiene que ver con el Closure, cuando invocas la función myMoneyBox(x) (qué es como si fuera la función countCoins()) estás actualizando el valor original de saveCoins, ya no es 0 sino que pasa a ser lo que estaba antes + lo que le hayas añadido con el parámetro.

Pablo Antipan Quiñenao
Hola! La funcion moneyBox retorna una funcion. Y dado que 'saveCoins' fue declarado como 'var', queda en el scope global
Luego, en la linea
let myMoneyBox = moneyBox();
En la clase 5 del curso se explica como opera el scope.
Saludos :)