Funciones en JavaScript: encapsular lógica con intención

Domina la base de funciones para evitar duplicación, mejorar legibilidad y construir piezas reutilizables con parámetros, retorno y sintaxis moderna.

Una función es una unidad de trabajo: recibe entradas, aplica reglas y devuelve una salida que otras partes del programa pueden reutilizar.

Cuando no usas funciones, acabas repitiendo bloques, aumentando errores y dificultando cambios futuros.

Aquí vas a aprender a diseñarlas con intención: nombres claros, parámetros útiles y retornos predecibles.

Objetivo práctico: transformar lógica dispersa en piezas pequeñas, probables y mantenibles.

  • Programar bien no es escribir más código, es organizar mejor la lógica.
  • Cada vez que detectas un patrón repetido, una función es candidata natural para encapsularlo y evitar duplicación.
  • Además, las funciones te obligan a definir contratos claros: qué reciben, qué hacen y qué devuelven. Eso reduce ambigüedad.
  • Estructura mínima: nombre + parámetros + cuerpo + retorno opcional.
  • Una declaración clásica se lee muy bien en bloques de lógica de negocio o cuando quieres claridad explícita.

Por qué las funciones cambian tu forma de programar

Programar bien no es escribir más código, es organizar mejor la lógica.

Cada vez que detectas un patrón repetido, una función es candidata natural para encapsularlo y evitar duplicación.

Además, las funciones te obligan a definir contratos claros: qué reciben, qué hacen y qué devuelven. Eso reduce ambigüedad.

Declarar funciones con `function`

Estructura mínima: nombre + parámetros + cuerpo + retorno opcional.

Una declaración clásica se lee muy bien en bloques de lógica de negocio o cuando quieres claridad explícita.

Prioriza nombres verbales y expresivos para que la función documente su intención por sí misma.

  • Parámetros = entradas esperadas.
  • Argumentos = valores reales al invocar.
  • Nombre claro > nombre corto ambiguo.
  • Una responsabilidad por función.

Parámetros por defecto y robustez

Diseña funciones que no se rompan cuando falta un dato opcional.

Los parámetros por defecto evitan que aparezcan `undefined` inesperados en mensajes o cálculos simples.

Es una técnica útil para APIs internas donde algunas opciones pueden omitirse sin romper el flujo principal.

`return` y control del flujo

Cuando una función hace `return`, termina su ejecución inmediatamente.

`return` define salida y también actúa como corte de flujo. Esto permite estrategias de validación temprana para evitar condicionales anidados innecesarios.

Olvidar `return` es uno de los fallos más frecuentes al empezar; si no devuelves nada, obtendrás `undefined`.

Arrow functions con criterio

Más concisión en callbacks y funciones pequeñas, sin sacrificar claridad.

Las arrow functions son muy comunes en `map`, `filter`, listeners y utilidades cortas. Son cómodas, pero no obligatorias en todo caso.

Si una función crece o necesita mucha lógica, una declaración tradicional puede resultar más legible para equipos.

  • Úsalas en funciones cortas y expresivas.
  • Evita comprimir lógica compleja en una sola línea.
  • Manten consistencia dentro del archivo/proyecto.
  • Prioriza intención clara sobre moda sintáctica.
JavaScript
10

Funciones en JavaScript: encapsular lógica con intención

Domina la base de funciones para evitar duplicación, mejorar legibilidad y construir piezas reutilizables con parámetros, retorno y sintaxis moderna.

Código del tema: function · parámetros · return · =>

📘 Teoría

Por qué las funciones cambian tu forma de programar

Programar bien no es escribir más código, es organizar mejor la lógica.

Cada vez que detectas un patrón repetido, una función es candidata natural para encapsularlo y evitar duplicación.

Además, las funciones te obligan a definir contratos claros: qué reciben, qué hacen y qué devuelven. Eso reduce ambigüedad.

1

Reutilización

2

Legibilidad

3

Mantenimiento

4

Depuración

Declarar funciones con `function`

Estructura mínima: nombre + parámetros + cuerpo + retorno opcional.

Una declaración clásica se lee muy bien en bloques de lógica de negocio o cuando quieres claridad explícita.

Prioriza nombres verbales y expresivos para que la función documente su intención por sí misma.

  • Parámetros = entradas esperadas.
  • Argumentos = valores reales al invocar.
  • Nombre claro > nombre corto ambiguo.
  • Una responsabilidad por función.
Función declarada con retorno
function calcularSubtotal(precio, cantidad) {
  return precio * cantidad;
}

const subtotal = calcularSubtotal(25, 3);
console.log('Subtotal:', subtotal);

Parámetros por defecto y robustez

Diseña funciones que no se rompan cuando falta un dato opcional.

1

Los parámetros por defecto evitan que aparezcan `undefined` inesperados en mensajes o cálculos simples.

2

Es una técnica útil para APIs internas donde algunas opciones pueden omitirse sin romper el flujo principal.

Parámetro opcional con valor por defecto
function crearSaludo(nombre, idioma = 'es') {
  if (idioma === 'en') return `Hello, ${nombre}`;
  return `Hola, ${nombre}`;
}

console.log(crearSaludo('Clara'));
console.log(crearSaludo('Liam', 'en'));

`return` y control del flujo

Cuando una función hace `return`, termina su ejecución inmediatamente.

1

`return` define salida y también actúa como corte de flujo. Esto permite estrategias de validación temprana para evitar condicionales anidados innecesarios.

2

Olvidar `return` es uno de los fallos más frecuentes al empezar; si no devuelves nada, obtendrás `undefined`.

Return temprano para validación
function dividirSeguro(a, b) {
  if (b === 0) return 'Error: división entre cero';
  return a / b;
}

console.log(dividirSeguro(10, 2));
console.log(dividirSeguro(10, 0));

Arrow functions con criterio

Más concisión en callbacks y funciones pequeñas, sin sacrificar claridad.

Las arrow functions son muy comunes en `map`, `filter`, listeners y utilidades cortas. Son cómodas, pero no obligatorias en todo caso.

Si una función crece o necesita mucha lógica, una declaración tradicional puede resultar más legible para equipos.

  • Úsalas en funciones cortas y expresivas.
  • Evita comprimir lógica compleja en una sola línea.
  • Manten consistencia dentro del archivo/proyecto.
  • Prioriza intención clara sobre moda sintáctica.
Arrow function práctica
const aplicarDescuento = (precio, porcentaje = 0) => precio - precio * (porcentaje / 100);

console.log(aplicarDescuento(100, 15));
console.log(aplicarDescuento(80));

🧭 Visuales clave

Entrada, bloque y retorno de una funcion

Encaja mejor con esta fase basica: ayuda a pensar una funcion como una unidad que recibe, procesa y devuelve.

Esquema de funcion como bloque reutilizable con entrada de datos, logica interna y retorno

🧪 Aprende probando

Ejemplo Ejemplo guiado: función reutilizable Invoca la misma función con diferentes datos para ver reutilización real.
Ejemplo Ejemplo guiado: parámetros por defecto Comprueba comportamiento con y sin argumento opcional.
Ejemplo Demo interactiva: cálculo de precio final Usa una función para calcular total con descuento seleccionado desde UI.
Ejemplo Demo interactiva: precio final con funciones pequeñas Encadena funciones para aplicar descuento, sumar IVA y formatear el resultado sin mezclar todo en un único bloque.

🏁 Retos

Reto Reto 1: función saludo con retorno Declara una función que reciba nombre y devuelva saludo personalizado.
Reto Reto 2: arrow function de descuento Implementa una arrow function que calcule precio final con porcentaje.

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros 😉.

Esta la hice en febrero de 2026 para facilitar el aprendizaje de mis alumnxs. Aprender desarrollo web practicando. La idea es que crezca semanalmente con nuevos temas, tests y retos.

Inspirado en MDN, en W3Schools, en Codepen, en el crack de Manz y en mil sitios de documentación sobre desarrollo web. Quería aportar además de bloques teóricos con ejemplos, la gamificación de los retos y el sistema de test que ya tenía en culTest .

Si te gustó, si no te gustó, si quieres saludarme, o invitarme a 🍻 no dudes en escribirme en cristianeslava@gmail.com .