Parámetros y argumentos
El parámetro es el hueco que declara la función y el argumento el valor que le pasas. Por qué el orden importa y de dónde sale el undefined inesperado.
Definición rápida
Los parámetros son los nombres que declara una función para recibir datos, y los argumentos son los valores concretos con los que se la llama.
Los parámetros son los nombres que una función declara para recibir datos; los argumentos son los valores concretos con los que la llamas. La distinción parece terminología y explica dos errores muy frecuentes: el undefined que aparece de la nada y el cálculo correcto con los datos intercambiados.
En una línea de código
function calcularTotal(precio, cantidad) { // precio y cantidad: PARÁMETROS
return precio * cantidad;
}
calcularTotal(20, 3); // 20 y 3: ARGUMENTOS
El parámetro es el hueco; el argumento es lo que metes en el hueco. Dentro de la función, los parámetros se comportan como variables locales que ya llegan con valor.
Se asignan por posición
function dividir(a, b) {
return a / b;
}
dividir(10, 2); // 5
dividir(2, 10); // 0.2 ← mismos argumentos, otro resultado
JavaScript no mira los nombres al llamar: reparte los valores en orden. Con dos parámetros del mismo tipo es fácil invertirlos y obtener un resultado plausible pero incorrecto, que es la peor clase de error porque no salta ninguna alarma.
Argumentos que faltan
function saludar(nombre, saludo) {
return `${saludo}, ${nombre}`;
}
saludar("Ana"); // "undefined, Ana"
No hay error: el parámetro sin argumento vale undefined. Para evitarlo, valores por defecto:
function saludar(nombre, saludo = "Hola") {
return `${saludo}, ${nombre}`;
}
saludar("Ana"); // "Hola, Ana"
Cuántos parámetros y cómo nombrarlos
Uno o dos es lo ideal; tres es aceptable si el orden resulta evidente; a partir de cuatro es mejor agrupar los datos en un objeto y pasar uno solo, porque así el orden deja de importar.
Y nómbralos por lo que significan, no por su tipo: precioUnitario en lugar de num1. El nombre del parámetro es la mitad de la documentación de una función.
Errores típicos
- Usar variables de fuera en lugar de parámetros. La función deja de ser reutilizable y su resultado depende de un estado invisible.
- Invertir el orden al llamar.
- Declarar parámetros que nunca se usan. Señal de que la función quedó a medias.
Dónde se practica
Los ejercicios autocorregidos del curso llaman a tu función por su nombre con argumentos concretos, así que respetar la firma exacta —cuántos parámetros, en qué orden y qué se devuelve con return— deja de ser teoría desde el primer ejercicio del módulo 2, que es gratuito. Puedes verlo en el temario.
Preguntas frecuentes
¿Qué pasa si llamo a una función con menos argumentos de los que espera?
Los parámetros que no reciben valor valen undefined. No hay error inmediato: el fallo aparece al operar con ese undefined, normalmente como NaN.
¿Importa el orden de los argumentos?
Sí, se asignan por posición y no por nombre. Si la función espera (precio, cantidad) y la llamas con (3, 20), calculará con precio 3 y cantidad 20.
¿Se puede dar un valor por defecto a un parámetro?
Sí: function saludar(nombre, saludo = "Hola"). Si no pasas el segundo argumento, se usa el valor por defecto. Estos parámetros van siempre al final de la lista.