Parámetros por Defecto en JavaScript

En JavaScript, los parámetros por defecto permiten asignar valores iniciales a los parámetros de una función si no se proporciona un argumento durante la llamada. Esta característica, introducida en ES6, facilita la escritura de funciones más robustas, limpias y legibles, al evitar la necesidad de comprobaciones manuales para valores undefined.

En este artículo aprenderás qué son los parámetros por defecto en JavaScript, cómo funcionan, cómo evaluarlos en diferentes situaciones y cómo utilizarlos de manera efectiva en tus funciones.

¿Qué son los parámetros por defecto?

Un parámetro por defecto es un valor inicial que se asigna a un parámetro de una función en caso de que no se pase ningún argumento al momento de invocarla. Esto evita la necesidad de comprobar manualmente si un parámetro es undefined y asignar un valor.

javascript
function myFunction(parm = defaultVal) {
  // código de la función
}

se utiliza el operador de asignación = y el valor predeterminado después del nombre del parámetro para establecer un valor predeterminado.

Consideremos un ejemplo básico donde definimos una función que saluda a un usuario. Si no se proporciona un nombre, la función debe utilizar un nombre por defecto.

javascript
function greet(name = 'Usuario') {
  return `Hola, ${name}!`;
}

console.log(greet());
console.log(greet('Carlos'));

En este ejemplo, si no se proporciona un valor para el parámetro nombre, la función utiliza el valor 'Usuario' como predeterminado. Cuando se pasa un argumento, este sobrescribe el valor predeterminado.

Argumentos vs parámetros

Es importante entender la diferencia entre argumentos y parámetros en JavaScript. Los Parámetros: Son las variables que se definen en la declaración de la función. Mientras que los Argumentos: Son los valores reales que se pasan a la función cuando se invoca.

javascript
function multiplicar(a, b) { // a y b son parámetros
  return a * b;
}

console.log(multiplicar(2, 3)); // 2 y 3 son argumentos

Evaluación de expresiones en parámetros por defecto

Los valores predeterminados de los parámetros pueden ser cualquier expresión válida en JavaScript, incluidas otras variables, operaciones o llamadas a funciones.

Ejemplo con variables:

javascript
let base = 10;

function calcularArea(lado = base) {
  return lado * lado;
}

console.log(calcularArea());  // (lado = base = 10)
base = 5;
console.log(calcularArea());  // (lado = base = 5)

En el ejemplo anterior el valor predeterminado de lado se toma de la variable base al momento de ejecutar la función.

Ejemplo con incrementos dinámicos:

javascript
let contador = 0;

function incrementar(num = ++contador) {
  return num;
}

console.log(incrementar());
console.log(incrementar());
console.log(incrementar(5)); // (sobrescribe el valor por defecto)

En este caso, cada vez que se llama a la función sin argumentos, el valor de contador se incrementa y se asigna como valor predeterminado.

Uso del objeto arguments

El objeto arguments en JavaScript representa todos los valores pasados a una función, independientemente de si coinciden con los parámetros declarados. Antes de ES6, era común acceder a este objeto para manejar argumentos no definidos, especialmente en funciones con parámetros opcionales o cantidad variable de argumentos.

Aunque el objeto arguments permite acceder a todos los valores pasados a una función, este no interactúa directamente con los parámetros por defecto. Los valores predeterminados solo se aplican cuando un argumento no se proporciona explícitamente.

javascript
function sumar(a = 0, b = 0) {
  console.log(arguments[0], arguments[1]);
  return a + b;
}

console.log(sumar(5)); // Salida: 5, undefined -> Resultado: 5
console.log(sumar());  // Salida: undefined, undefined -> Resultado: 0

Aunque arguments refleja los valores pasados, no tiene en cuenta los valores predeterminados asignados a los parámetros.

Tener en cuenta que los parámetros por defecto no afectan el comportamiento del objeto arguments. Aunque los parámetros predeterminados asignan valores cuando no se pasa un argumento, el objeto arguments sigue mostrando undefined para esos parámetros.

Uso de funciones como valores por defecto

También es posible asignar una función como valor predeterminado para un parámetro. Esto resulta útil cuando el valor inicial necesita un cálculo dinámico.

javascript
function valorAleatorio() {
  return Math.random() * 10;
}

function mostrarValor(valor = valorAleatorio()) {
  return `El valor es: ${valor}`;
}

console.log(mostrarValor());   // "El valor es: <número aleatorio>"
console.log(mostrarValor(5));  // "El valor es: 5"

En el anterior ejemplo, si no se proporciona un argumento, la función valorAleatorio() se ejecuta para generar un valor por defecto.

Aplicaciones prácticas de los parámetros por defecto

El uso de parámetros por defecto es particularmente útil en las siguientes situaciones:

  • Parámetros opcionales: Los parámetros por defecto son útiles en funciones donde algunos argumentos son opcionales. Por ejemplo, en funciones que manejan configuraciones, es común establecer valores predeterminados para evitar comportamientos inesperados cuando no se proporcionan argumentos.
  • Cálculos dinámicos: Cuando los valores predeterminados requieren cálculos, los parámetros por defecto permiten definir estos cálculos directamente en la declaración de la función. Esto mejora la claridad del código al eliminar la necesidad de comprobar el valor dentro del cuerpo de la función.
  • Evitar errores en funciones públicas: En aplicaciones con funciones expuestas a otros módulos o bibliotecas, los parámetros por defecto aseguran que la función tenga valores válidos incluso si el usuario no proporciona todos los argumentos requeridos.
  • Valores predeterminados basados en contexto: En funciones que dependen de variables globales o de estado, los parámetros por defecto permiten establecer valores iniciales dinámicos sin escribir lógica adicional.
  • Compatibilidad con APIs y configuraciones: En funciones que interactúan con APIs o sistemas externos, los parámetros por defecto permiten manejar de manera más sencilla valores faltantes sin afectar el flujo de ejecución.

Conclusión

Los parámetros por defecto en JavaScript permiten simplificar y robustecer las funciones al establecer valores iniciales cuando no se proporciona un argumento. Esta característica resulta útil en funciones con parámetros opcionales, cálculos dinámicos y configuraciones predeterminadas. Además, mejora la legibilidad y evita la necesidad de comprobaciones manuales para asignar valores.

+1
0
+1
0