CodeForge

JavaScript de Cero a Experto / Funciones

Reto: la caja de Mi Bolsillo

Reto30 min60 XP

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

Media25 min60 XP(×2 sin mirar la solución)

Qué debes construir

Un conjunto de funciones para Mi Bolsillo que produzca una salida así:

terminal

Total del carrito: 107200

Saldo tras comprar: 92800

Fondos insuficientes para gastar 500000

Saldo actual: 92800

Requisitos:

  1. crearBolsillo(saldoInicial): usa un CLOSURE. Guarda el saldo en su mochila (privado) y devuelve una función gastar(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.
  2. conIva(precio, tasa = 0.19): una ARROW con valor por defecto, que devuelva el precio con IVA (redondeado con Math.round).
  3. totalDe(...montos): usa REST para sumar cualquier cantidad de montos y devolver el total.
  4. Ú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.