Saltar al contenido
Curso de JavaScript
Todos los cursos Ir al ejercicio →

Funciones

  • ⏱ 45 minutos
  • 📶 Nivel: principiante
  • 🧩 Incluye ejercicio

💡 🎯 Al terminar esta lección podrás…

  • Definir y llamar funciones con parámetros y return.
  • Elegir entre declaración, expresión y función flecha.
  • Entender el ámbito de las variables.
  • Usar funciones como valores: callbacks y closures básicas.

1.Qué es una función

Una función es un bloque de código con nombre que puedes ejecutar cuando quieras, las veces que quieras, y con datos distintos cada vez. Es la herramienta principal para organizar un programa, evitar repetir código y darle nombre a cada tarea.

Ya has usado funciones sin saberlo: console.log(), Math.round() o "hola".toUpperCase() son funciones que escribió otra persona. Ahora escribirás las tuyas.

▶ Tu primera función
Consola
  1. Defines la función con function nombre(parámetros) { … }.
  2. La llamas con nombre(argumentos). Hasta que no la llamas, no hace nada.
  3. Devuelve un resultado con return.

2.Parámetros, argumentos y return

TérminoQué esEjemplo
ParámetroEl nombre que la función usa para un dato de entradafunction sumar(a, b) → a y b
ArgumentoEl valor concreto que pasas al llamarlasumar(3, 4) → 3 y 4
returnEl valor que la función devuelve y terminareturn a + b;
▶ Entradas y salida
Consola

⚠️ Importante · return frente a console.log

console.log muestra un valor; return lo entrega a quien llamó a la función para que lo use. Una función útil casi siempre devuelve su resultado (y es quien la llama la que decide si lo muestra, lo guarda o lo suma a otra cosa). Si una función no tiene return, devuelve undefined.

Valores por defecto

Un parámetro opcional
function saludar(nombre = "amigo") {
  return `Hola, ${nombre}`;
}
console.log(saludar("Ana"));   // "Hola, Ana"
console.log(saludar());        // "Hola, amigo"

3.Tres maneras de escribir una función

FormaSintaxisNotas
Declaraciónfunction sumar(a, b) { return a + b; }Se puede llamar antes de definirla (hoisting)
Expresiónconst sumar = function (a, b) { return a + b; };Es un valor guardado en una variable
Flechaconst sumar = (a, b) => a + b;Más corta; muy usada con arrays y eventos
▶ Funciones flecha
Consola

💡 Consejo · ¿Cuál usar?

Para empezar, la declaración (function nombre() {}) es la más legible. Las flechas son perfectas para funciones pequeñas que pasarás a otras (como en map o addEventListener). Con el tiempo verás que cada una tiene su sitio.

4.Ámbito: dónde vive cada variable

El ámbito (*scope*) es la zona del código donde una variable es visible. Las variables creadas dentro de una función no existen fuera de ella:

▶ Ámbito
Consola
ÁmbitoDónde existe
GlobalEn todo el programa (declaradas fuera de funciones y bloques)
De funciónSolo dentro de esa función
De bloqueSolo dentro de { … } si usas let o const (un if, un for…)

💡 Consejo · Evita variables globales

Las variables globales pueden modificarse desde cualquier parte, lo que hace los errores difíciles de rastrear. Pasa los datos por parámetros y devuélvelos con return: tus funciones serán más fáciles de probar y de reutilizar.

5.Funciones puras y pequeñas

Una función pura siempre devuelve lo mismo para los mismos argumentos y no cambia nada fuera de ella. Son las más fáciles de entender, de probar y de reutilizar.

▶ Pura frente a impura
Consola

6.Parámetros rest y spread

Un número variable de argumentos
function sumarTodos(...numeros) {         // ...numeros: agrupa los argumentos en un array
  let total = 0;
  for (const n of numeros) total += n;
  return total;
}
console.log(sumarTodos(1, 2, 3));          // 6
console.log(sumarTodos(10, 20, 30, 40));   // 100

const lista = [4, 8, 15];
console.log(Math.max(...lista));           // ...lista: reparte el array en argumentos

📌 Nota · Los tres puntos

Los ... hacen dos cosas según dónde estén: en la definición de una función agrupan (rest); al llamar o en un array/objeto reparten (spread). Lo volverás a ver en arrays y objetos.

7.Funciones como valores: callbacks

En JavaScript, las funciones son valores: puedes guardarlas en variables, pasarlas como argumentos y devolverlas de otras funciones. Una función que se pasa a otra para que esta la ejecute después se llama callback.

▶ Pasar funciones como argumentos
Consola

Los callbacks son la base de los eventos («cuando pulsen el botón, ejecuta esta función») y de la asincronía («cuando llegue la respuesta, ejecuta esta función»), que verás en las lecciones 9 y 10.

8.Un vistazo a las closures

Una función recuerda las variables del lugar donde se creó, incluso después de que ese lugar haya terminado. A esto se le llama closure (clausura) y permite cosas muy útiles:

▶ Un contador con memoria
Consola

📌 Nota · No hace falta dominarlo ya

Las closures confunden al principio y es normal. Lo importante: la función interna sigue teniendo acceso a cuenta, y nadie de fuera puede tocarla. Lo usarás sin darte cuenta cada vez que escribas un evento o un callback dentro de una función.

9.Errores frecuentes

📒 Apuntes para llevar

  • Una función es un bloque con nombre que se define una vez y se llama muchas.
  • Parámetros son los nombres de entrada; argumentos los valores al llamar; return entrega el resultado y termina la función.
  • Tres formas: declaración (function f() {}), expresión (const f = function () {}) y flecha (const f = () => {}).
  • Las variables de una función no existen fuera de ella; las de fuera sí se ven desde dentro.
  • Prefiere funciones puras y pequeñas: reciben datos por parámetros y los devuelven con return.
  • Los valores por defecto (nombre = "amigo") y los parámetros rest (...numeros) dan flexibilidad.
  • Las funciones son valores: se pasan como callbacks, base de eventos y asincronía.
  • Una closure es una función que recuerda las variables del lugar donde nació.

10.Glosario

TérminoSignificado
FunciónBloque de código con nombre que se ejecuta al llamarlo.
ParámetroNombre de un dato de entrada en la definición de la función.
ArgumentoValor que se pasa al llamar a la función.
returnDevuelve un valor y termina la función.
Ámbito (scope)Zona donde una variable es visible.
Función flechaForma corta de escribir funciones: (a, b) => a + b.
CallbackFunción que se pasa a otra para que la ejecute más tarde.
ClosureFunción que conserva acceso a las variables de su entorno de creación.

🧠 Comprueba lo aprendido

Elige una respuesta en cada pregunta. Verás al instante si acertaste y por qué.

¿Qué devuelve una función que no tiene return?

¿Qué diferencia hay entre saludar y saludar()?

Una variable declarada con const dentro de una función, ¿se puede usar fuera?

¿Cuál de estas es una función flecha correcta que devuelve el doble?

¿Qué es un callback?

Tu progreso se guarda en este navegador y se refleja en el índice del curso.

💡 🚀 ¡Ahora te toca!

La práctica fija lo aprendido. Pasa al ejercicio de esta lección.

Ir al ejercicio