JavaScript de Cero a Experto / Funciones
Reto: la caja de Mi Bolsillo
Tu primera "mini-librería": un conjunto de funciones que colaboran para manejar el bolsillo. Vas a juntar TODO el módulo —parámetros, valores por defecto, arrow, rest, y un closure para estado privado— en una pieza que se comporta como una caja registradora de verdad.
Reto
La caja registradora
Qué debes construir
Un conjunto de funciones para Mi Bolsillo que produzca una salida así:
Total del carrito: 107200
Saldo tras comprar: 92800
Fondos insuficientes para gastar 500000
Saldo actual: 92800
Requisitos:
crearBolsillo(saldoInicial): usa un CLOSURE. Guarda el saldo en su mochila (privado) y devuelve una funcióngastar(monto)que:- Si el monto supera el saldo → imprime "Fondos insuficientes para gastar [monto]" y NO gasta (devuelve el saldo igual).
- Si alcanza → resta y devuelve el saldo restante.
conIva(precio, tasa = 0.19): una ARROW con valor por defecto, que devuelva el precio con IVA (redondeado conMath.round).totalDe(...montos): usa REST para sumar cualquier cantidad de montos y devolver el total.- Úsalas juntas: crea un bolsillo, calcula el total de un carrito (algunos ítems con IVA), gasta ese total, e intenta gastar de más para ver el rechazo.
Reglas
- Solo lo de los módulos 1-3: variables, tipos, control, y funciones
(params, defaults, arrow, rest, closures). Sin objetos ni arrays "a
propósito" (el rest te da una lista para recorrer con
for...of). - El saldo debe ser PRIVADO: solo se puede tocar a través de
gastar.
25:00
Cuando estés listo, arranca el reloj.
Qué sigue
Módulo 3 cerrado: empaquetas lógica en funciones, las combinas y hasta les
das memoria privada con closures. Pero un dato suelto (un saldo, un nombre)
se queda corto para lo real: necesitas manejar LISTAS de cosas —todos tus
gastos, no uno—. El módulo 4 abre los ARRAYS: guardar, recorrer y transformar
colecciones de datos, con los métodos (map, filter, reduce) que son el
pan de cada día de un programador de JavaScript.