Parámetros de función predeterminados de JavaScript

Mehvish Ashiq 12 octubre 2023
Parámetros de función predeterminados de JavaScript

Este artículo ilustra los parámetros de función predeterminados de JavaScript que permiten que los parámetros nombrados se inicialicen con valores predeterminados (si no se pasan los parámetros reales o se pasa undefined). Aprenderemos la diferencia entre los parámetros con nombre y los parámetros reales y su uso.

Los parámetros reales son los valores reales pasados ​​a la función por su llamador. Los parámetros con nombre utilizan nombres para los parámetros reales. Estos nombres están asociados con los parámetros formales en la definición de la función.

Los parámetros reales están etiquetados dentro del cuerpo de la función. El orden no importa para los parámetros con nombre siempre que estén etiquetados correctamente.

Parámetros de función predeterminados de JavaScript

En el siguiente código, el valor de num2 sería dos (2) si no se pasa ningún valor (o se pasa undefined) al llamar a la función sum().

function sum(num1, num2 = 2) {
  return num1 + num2;
}

console.log(sum(10, 3));         // expected output: 13
console.log(sum(3));             // expected output: 5
console.log(sum(3, undefined));  // expected output: 5

Ahora, ¿qué sucede si no usamos los parámetros de función predeterminados de JavaScript? Vea el ejemplo dado a continuación.

function sum(num1, num2) {
  return num1 + num2;
}

console.log(sum(10, 3));         // expected output: 13
console.log(sum(3));             // expected output: NaN
console.log(sum(3, undefined));  // expected output: NaN

Podemos utilizar la siguiente técnica para evitar NaN (Not a Number). El typeof comprueba si el valor o tipo de num2 es undefined, entonces el valor de num2 sería 1. typeof le permite pasar cualquier cosa, incluidos null y false.

function sum(num1, num2) {
  num2 = (typeof num2 !== 'undefined') ? num2 : 1
  return num1 + num2;
}

console.log(sum(5, 2));  // expected output: 7
console.log(sum(5));     // expected output: 6

Con ES2015, no es necesario indicar los parámetros predeterminados en el cuerpo de la función. Ahora, podemos asignar valores predeterminados dentro de la definición de la función. Compruebe el siguiente código de ejemplo.

function sum(num1, num2 = 1) {
  return num1 + num2;
}

console.log(sum(5, 2));          // expected output: 7
console.log(sum(5));             // expected output: 6
console.log(sum(5, undefined));  // expected output: 6

También podemos llamar a otra función como valor predeterminado. Echa un vistazo al siguiente ejemplo.

function multiply(num1 = 2, num2 = 3) {
  return num1 * num2;
}
function sum(num1, num2 = multiply()) {
  return num1 + num2;
}

console.log(sum(5, 2));          // expected output: 7
console.log(sum(5));             // expected output: 11
console.log(sum(5, undefined));  // expected output: 11

Practiquemos usando los datos de tipo cadena.

function greetings(
    name, greeting, message = greeting + ' ' + name + ', How are you?') {
  return message;
}
console.log(greetings('Mehvish', 'Hello'));
// expected output: "Hello Mehvish, How are you?"

console.log(greetings('Mehvish', 'Hello', 'What\'s up'));
// expected output: "What's up"

Hemos estudiado los parámetros de función predeterminados utilizando números, cadenas y funciones. Comprendamos cómo establecer valores predeterminados usando la asignación de desestructuración. Pero antes de eso, eche un vistazo a qué es exactamente la tarea de desestructuración.

const person = {
  firstname: 'Mehvish',
  lastname: 'Ashiq',
  age: 30,
  email: 'delfstack@example.com'
};
const {firstname, lastname, age, email} = person
console.log(firstname);
console.log(lastname);
console.log(email);

Producción :

"Mehvish"
"Ashiq"
"delfstack@example.com"

Es posible que haya notado que estamos usando directamente las propiedades del objeto en console.log en lugar de objectname.propertyname. Si comenta la línea const {firstname,lastname,age,email} = person, debe usar person.firstname, person.lastname, person.email para todas las declaraciones console.log.

Entonces, ¿qué está haciendo la siguiente línea de código? Es una tarea de desestructuración que significa desempaquetar el objeto. En este momento, tenemos propiedades mínimas en el objeto person.

Solo piense, tenemos cientos de propiedades en un objeto y usamos objectname.propertyname cada vez. Se verá desordenado. Aquí, es útil desempaquetar el objeto.

Con eso, nos deshacemos de la parte objectname. y utilice propertyname únicamente.

const {firstname, lastname, age, email} = person;

Usemos esta asignación de desestructuración para los parámetros de función predeterminados de JavaScript.

function displayPerson(lastname, firstname, email = 'mehvish.ashiq@gmail.com') {
  if (typeof email !== 'undefined') {
    console.log('not using default value of email');
    console.log(firstname, lastname, email);
  } else {
    console.log('using default value of email');
    console.log(firstname, lastname, email);
  }
}

const person = {
  firstname: 'Mehvish',
  lastname: 'Ashiq',
  age: 30,
  email: 'delfstack@example.com'
};
const {firstname, lastname, age, email} =
    person  // destructure assignment (unpack the object)
displayPerson(age, firstname, email);
displayPerson(
    age,
    firstname);  // default value of email will be used in this function call

Producción :

"not using default value of email"
"Mehvish", 30, "delfstack@example.com"
"not using default value of email"
"Mehvish", 30, "mehvish.ashiq@gmail.com"

En este ejemplo, se utilizará el valor predeterminado de email si la persona que llama no lo pasa.

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

Artículo relacionado - JavaScript Function