Paramètres de fonction par défaut JavaScript

Mehvish Ashiq 12 octobre 2023
Paramètres de fonction par défaut JavaScript

Cet article éclaire les paramètres de fonction par défaut de JavaScript qui permettent aux paramètres nommés d’être initialisés avec des valeurs par défaut (si les paramètres réels ne sont pas passés ou si undefined est passé). Nous apprendrons la différence entre les paramètres nommés et les paramètres réels et leur utilisation.

Les paramètres réels sont les valeurs réelles transmises à la fonction par son appelant. Les paramètres nommés utilisent des noms pour les paramètres réels. Ces noms sont associés aux paramètres formels dans la définition de la fonction.

Les paramètres réels sont étiquetés dans le corps de la fonction. L’ordre n’a pas d’importance pour les paramètres nommés tant qu’ils sont correctement étiquetés.

Paramètres de fonction par défaut JavaScript

Dans le code suivant, la valeur de num2 serait deux (2) si aucune valeur n’est transmise (ou si undefined est transmis) lors de l’appel de la fonction 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

Maintenant, que se passe-t-il si nous n’utilisons pas les paramètres de fonction par défaut de JavaScript. Voir l’exemple ci-dessous.

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

On peut utiliser la technique suivante pour éviter NaN (Not a Number). Le typeof vérifie si la valeur ou le type de num2 est undefined, alors la valeur de num2 serait 1. typeof vous permet de passer n’importe quoi, y compris null et 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

En utilisant ES2015, il n’est pas nécessaire d’indiquer les paramètres par défaut dans le corps de la fonction. Maintenant, nous pouvons attribuer des valeurs par défaut dans la définition de la fonction. Vérifiez l’exemple de code suivant.

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

Nous pouvons également appeler une autre fonction comme valeur par défaut. Jetez un oeil à l’exemple suivant.

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

Entraînons-nous en utilisant les données de type chaîne.

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"

Nous avons étudié les paramètres de fonction par défaut en utilisant des nombres, des chaînes et des fonctions. Voyons comment définir les valeurs par défaut à l’aide de l’affectation de déstructuration. Mais avant cela, regardez ce qu’est exactement l’affectation de déstructuration ?

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);

Production :

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

Vous avez peut-être remarqué que nous utilisons directement les propriétés de l’objet dans console.log plutôt que objectname.propertyname. Si vous commentez la ligne const {firstname,lastname,age,email} = person, vous devez utiliser person.firstname, person.lastname, person.email pour toutes les déclarations console.log.

Alors, que fait la ligne de code suivante ? C’est une affectation de déstructuration qui consiste à déballer l’objet. À l’heure actuelle, nous avons des propriétés minimales dans l’objet person.

Pensez-y, nous avons des centaines de propriétés dans un objet et utilisons objectname.propertyname à chaque fois. Cela aura l’air désordonné. Ici, le déballage de l’objet est utile.

Avec cela, nous nous débarrassons de la partie objectname. et utilisez propertyname uniquement.

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

Utilisons cette affectation de déstructuration pour les paramètres de fonction JavaScript par défaut.

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

Production :

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

Dans cet exemple, la valeur par défaut de email sera utilisée si l’appelant ne la passe pas.

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

Article connexe - JavaScript Function