En JavaScript, los parámetros por defecto permiten asignar un valor predeterminado a los parámetros de una función en caso de que no se proporcione uno durante su llamada. Esta característica fue introducida en ES6 y facilita la escritura de código más claro y robusto.
Para definir un parámetro por defecto, simplemente se asigna un valor al parámetro en la declaración de la función:
function saludar(nombre = "Invitado") {
console.log(`Hola, ${nombre}!`);
}
saludar(); // Salida: Hola, Invitado!
saludar("Ana"); // Salida: Hola, Ana!
En este ejemplo:
nombre
, se utiliza el valor por defecto “Invitado”.undefined
: Sin parámetros por defecto, un parámetro no proporcionado tendrá el valor undefined
, lo que puede llevar a errores si no se maneja adecuadamente.Los valores por defecto también se pueden combinar con otros parámetros:
function crearUsuario(nombre = "Anónimo", edad = 18, esAdmin = false) {
return {
nombre: nombre,
edad: edad,
esAdmin: esAdmin
};
}
console.log(crearUsuario());
// Salida: { nombre: "Anónimo", edad: 18, esAdmin: false }
console.log(crearUsuario("Carlos", 25));
// Salida: { nombre: "Carlos", edad: 25, esAdmin: false }
En este caso, solo se sobrescriben los parámetros que se especifican durante la llamada.
Es posible utilizar valores de otros parámetros como valores por defecto, pero el parámetro utilizado debe haber sido declarado antes:
function calcularPrecio(precioBase, impuesto = 0.15, descuento = precioBase * 0.1) {
return precioBase + (precioBase * impuesto) - descuento;
}
console.log(calcularPrecio(100));
// Salida: 105 (100 + 15 - 10)
console.log(calcularPrecio(100, 0.2));
// Salida: 110 (100 + 20 - 10)
Si se intenta usar un parámetro declarado después como valor por defecto, se generará un error.
Los valores por defecto pueden ser resultados de expresiones o incluso funciones:
function generarID() {
return Math.floor(Math.random() * 10000);
}
function registrarUsuario(nombre = "Usuario", id = generarID()) {
return { nombre, id };
}
console.log(registrarUsuario());
// Salida: { nombre: "Usuario", id: 1234 }
console.log(registrarUsuario("Ana"));
// Salida: { nombre: "Ana", id: 5678 }
Esto permite un alto nivel de personalización y flexibilidad en las funciones.
Antes de ES6, los desarrolladores solían asignar valores predeterminados de manera manual:
function sumar(a, b) {
a = a || 0;
b = b || 0;
return a + b;
}
console.log(sumar()); // Salida: 0
console.log(sumar(5, 7)); // Salida: 12
Aunque funcional, este enfoque no permite manejar valores como false
, 0
o ""
correctamente, ya que el operador ||
considera estos valores como falsos. Con parámetros por defecto:
function sumar(a = 0, b = 0) {
return a + b;
}
console.log(sumar()); // Salida: 0
console.log(sumar(5, 7)); // Salida: 12
Este método es más seguro y moderno.
Los parámetros por defecto son una herramienta poderosa para escribir funciones más limpias, comprensibles y robustas. Su combinación con otras características modernas de JavaScript hace que sean indispensables para el desarrollo eficiente y profesional.