Las funciones en JavaScript son bloques de código reutilizables que ejecutan una tarea específica, reciben datos y retornan un resultado cuando se invocan. Aprender a declararlas, pasarles parámetros y entender sus variantes es esencial para cualquier persona que empiece a programar en este lenguaje.
¿Cómo se declara una función en JavaScript?
Para crear una función necesitas la palabra reservada function, un nombre que describa la tarea, paréntesis para los parámetros y un bloque con el código a ejecutar [2:00].
javascript
function saludar(nombre) {
return Hola ${nombre};
}
const mensaje = saludar("Óscar");
const mensaje2 = saludar("Felipe");
console.log(mensaje);
console.log(mensaje2);
Fíjate en algo clave: la función solo se ejecuta cuando la llamas, no antes. Por eso puedes invocarla cuantas veces necesites, pasándole valores distintos. En el ejemplo, saludar usa template literals para componer el mensaje final con el valor recibido.
¿Qué hace una función en JavaScript? Encapsula un bloque de código reutilizable que recibe datos, ejecuta una tarea específica y retorna un resultado cuando es invocada.
¿Cuál es la diferencia entre parámetros y argumentos?
Esta confusión es común, pero la distinción es simple y se nota al construir una función real [4:30].
- Los parámetros son las variables definidas en la firma de la función, como
nombre y edad.
- Los argumentos son los valores reales que pasas cuando llamas la función, por ejemplo
"Ana" y 25.
javascript
function crearUsuario(nombre, edad) {
return { nombre, edad };
}
const usuario = crearUsuario("Ana", 25);
console.log(usuario);
Aquí nombre y edad son parámetros que se vuelven variables dentro del bloque, mientras que "Ana" y 25 son los argumentos que les dan vida en esta llamada concreta. La función retorna un objeto con esos datos, listo para usarse en una base de datos o en otra parte del flujo.
¿Qué diferencia hay entre parámetro y argumento? El parámetro es la variable que declaras en la función. El argumento es el valor concreto que le pasas cuando la invocas.
¿Por qué importan los nombres descriptivos?
Nombrar bien tus funciones no es estética, es legibilidad. La máquina entenderá cualquier nombre, pero tú o tu equipo leerán ese código en el futuro. Una función llamada crearUsuario deja claro qué hace; una llamada pepito te obliga a leer el cuerpo entero para adivinarlo.
¿Qué son las arrow functions y cuándo usarlas?
Las arrow functions o funciones flecha son una sintaxis más corta que se asigna a una constante. Te las vas a encontrar muchísimo en código moderno [9:15].
javascript
const multiplicar = (a, b) => a * b;
console.log(multiplicar(4, 5));
La estructura es: const, nombre, igual, paréntesis con parámetros, flecha => y el cuerpo. Cuando la operación cabe en una línea, puedes omitir las llaves y el return, y aun así obtener el resultado correcto.
También puedes usar arrow functions con un bloque completo cuando la lógica lo requiere, por ejemplo para crear una nota con valores por defecto:
javascript
const crearNota = (contenido, titulo = "Sin título") => {
return {
titulo,
contenido,
creado: Date.now()
};
};
const nota1 = crearNota("Mi contenido");
const nota2 = crearNota("Otro contenido", "Mi nota");
console.log(nota1);
console.log(nota2);
Aquí pasan dos cosas interesantes. Primero, el parámetro titulo tiene un valor por defecto ("Sin título"), así que si no lo pasas como argumento, la función igual funciona. Segundo, Date.now() te entrega un Unix timestamp, un número que cambia cada segundo y representa la fecha actual.
¿Cómo funcionan los parámetros por defecto?
Los parámetros por defecto se asignan con = en la firma de la función. Si llamas crearNota("Mi contenido") sin segundo argumento, titulo toma "Sin título" automáticamente. Si lo pasas, sobreescribe el valor por defecto. Es una forma elegante de evitar errores y hacer tus funciones más flexibles.
¿Por qué conviene crear funciones pequeñas y específicas?
Una buena práctica es ser granular: cada función debe hacer una sola cosa y hacerla bien [14:20]. Esto trae ventajas concretas:
- Lees el código más rápido porque cada nombre describe una acción clara.
- Cuando algo falla, el error te apunta a la función exacta donde está el problema.
- Probar el software se vuelve mucho más sencillo cuando cada pieza es atómica.
Si creas una función gigante que hace de todo, cuando aparezca un bug vas a tener que rastrear línea por línea. En cambio, si crearNota solo crea notas y crearUsuario solo crea usuarios, ya sabes a dónde mirar.
Recuerda algo importante: escribimos código para humanos, no para máquinas. La máquina interpreta cualquier cosa, pero tú del futuro o un compañero necesitan entenderlo sin sufrir.
¿Cuál de las tres formas de declarar funciones te parece más útil para empezar? Comparte tu solución a los retos en los comentarios.