Funciones
En diseño reutilizas continuamente: estilos de párrafo, componentes, símbolos.
Una función agrupa código con un nombre; se declara una vez y se llama cuantas quieras.
Recibe parámetros y devuelve un resultado con return.
return devuelve; console.log solo muestra.
Las variables de una función solo existen dentro de ella (ámbito).
- En diseño reutilizas continuamente: estilos de párrafo, componentes, símbolos. En programación, lo que se reutiliza son las funciones: bloques de código con nombre que hacen una tarea concreta y que puedes usar tantas veces como quieras.
- function saludar() { console.log("¡Hola!"); } saludar(); // ¡Hola! saludar(); // ¡Hola!
- Declarar (function nombre() { … }) solo define la función; no la ejecuta. Llamar (nombre()) la ejecuta. Los paréntesis son obligatorios.
- Nombra las funciones con un verbo que diga qué hacen: calcularEscala, dibujarCirculo, elegirColor.
- Las funciones útiles reciben datos (parámetros) y devuelven un resultado (return):
Introducción
En diseño reutilizas continuamente: estilos de párrafo, componentes, símbolos. En programación, lo que se reutiliza son las funciones: bloques de código con nombre que hacen una tarea concreta y que puedes usar tantas veces como quieras.
Declarar y llamar a una función
function saludar() { console.log("¡Hola!"); } saludar(); // ¡Hola! saludar(); // ¡Hola!
Declarar (function nombre() { … }) solo define la función; no la ejecuta. Llamar (nombre()) la ejecuta. Los paréntesis son obligatorios.
Nombra las funciones con un verbo que diga qué hacen: calcularEscala, dibujarCirculo, elegirColor.
Parámetros y valor de retorno
Las funciones útiles reciben datos (parámetros) y devuelven un resultado (return):
function calcularInterlineado(tamano, proporcion) { return tamano * proporcion; } const interlineado = calcularInterlineado(18, 1.5); // 27 console.log(calcularInterlineado(16, 1.4)); // 22.4
tamano y proporcion son parámetros: nombres que la función usa por dentro. 18 y 1.5 son los argumentos: los valores reales de esa llamada. return devuelve el resultado a quien llamó y termina la función: lo que haya debajo no se ejecuta.
Diferencia clave: console.log muestra un valor; return lo devuelve para que el programa lo siga usando. Una función que calcula algo debe devolverlo; ya decidirás fuera si lo muestras, lo guardas o lo pintas.
Funciones que deciden
Una función puede devolver resultados distintos según los datos. Así se encapsula una decisión que usarás muchas veces:
Funciones flecha
Existe una sintaxis más corta, muy usada en código moderno:
const doble = (n) => n * 2; const hslACss = (h, s, l) => `hsl(${h} ${s}% ${l}%)`; hslACss(200, 70, 45); // "hsl(200 70% 45%)"
Si el cuerpo es una sola expresión, se devuelve sin escribir return. Si necesitas varias líneas, usa llaves y return. Al principio, usa la forma que te resulte más clara.
Ámbito: dónde existe cada variable
Las variables declaradas dentro de una función (o de cualquier bloque { }) solo existen ahí dentro:
function area(ancho, alto) { const resultado = ancho * alto; return resultado; } area(3, 4); // 12 console.log(resultado); // ReferenceError: resultado is not defined
Es una ventaja: cada función tiene sus propias variables y no se pisan unas a otras. Evita depender de variables de fuera; pasa lo que necesites como parámetro.
Descomponer en funciones
¿Recuerdas el generador de carteles de la lección Algoritmos, pensar paso a paso? Cada parte es una función pequeña:
function elegirAlAzar(lista) { return lista[Math.floor(Math.random() * lista.length)]; } function generarCartel() { const fondo = elegirAlAzar(["#1d3557", "#e63946", "#f1faee"]); const texto = fondo === "#f1faee" ? "#1d3557" : "#f1faee"; return { fondo, texto }; }
Una buena función hace una sola cosa, tiene un nombre que lo dice y cabe en la pantalla sin desplazarse.
Errores frecuentes
Olvidar los paréntesis al llamar: saludar (sin ()) no ejecuta nada. Olvidar el return: la función calcula, pero devuelve undefined. Escribir código después de return y esperar que se ejecute. Pasar los argumentos en otro orden: escala(1.25, 16) no es lo mismo que escala(16, 1.25). El orden de los argumentos sigue el de los parámetros. Usar fuera de la función una variable declarada dentro.