Passer au contenu principal
eLearner.app
Module 4 · Leçon 3 sur 415/32 dans le cours~12 min
Leçons du module (3/4)

Paramètres par défaut et rest

JavaScript te permet de rendre les paramètres optionnels (avec une valeur par défaut) et d'accepter un nombre variable d'arguments avec l'opérateur rest (...).

Paramètres par défaut

JS
function saluta(nome, prefisso = 'Ciao') {
  return `${prefisso}, ${nome}!`;
}

saluta('Anna'); // 'Ciao, Anna!'
saluta('Marco', 'Buongiorno'); // 'Buongiorno, Marco!'

La valeur par défaut s'applique uniquement lorsque l'argument est undefined (y compris lorsqu'il n'est pas transmis). Pour null ou 0, la valeur par défaut ne se déclenche pas :

JS
function f(x = 10) {
  return x;
}
f(); // 10
f(undefined); // 10
f(null); // null
f(0); // 0

Rest : ...nomi

Pour accepter un nombre variable d'arguments, rassemble-les dans un tableau à l'aide de ... :

JS
function somma(...numeri) {
  let totale = 0;
  for (const n of numeri) totale += n;
  return totale;
}

somma(); // 0
somma(5); // 5
somma(1, 2, 3, 4); // 10

À l'intérieur de la fonction, numeri est un vrai tableau (et non l'objet magique arguments des anciennes fonctions).

Le paramètre rest doit être le dernier paramètre :

JS
function f(primo, ...altri) {
  /* ok */
}
// function f(...altri, ultimo) {} // SyntaxError

Spread lors de l'appel

L'autre facette de ... est l'opérateur spread, qui "déploie" un tableau en arguments distincts au moment de l'appel :

JS
function somma(a, b, c) {
  return a + b + c;
}

const nums = [1, 2, 3];
somma(...nums); // 6, equivalente a somma(1, 2, 3)

À toi de jouer

Exercice#js.m4.l3.e1
Tentatives : 0Chargement…

Définis une fonction `sum(a, b)` où `b` a une valeur par défaut de 0. Elle doit passer les assertions suivantes : sum(5) === 5, sum(2, 3) === 5, sum(0) === 0.

Chargement de l'éditeur…
Afficher l'indice

function sum(a, b = 0) { return a + b; }

Solution disponible après 3 tentatives

Exercice de révision

Exercice#js.m4.l3.e2
Tentatives : 0Chargement…

Définis une fonction `mean(...nums)` qui renvoie la moyenne arithmétique de ses arguments, ou 0 si aucun ne lui est passé.

Chargement de l'éditeur…
Afficher l'indice

Si nums.length vaut 0, renvoie 0 ; sinon calcule la somme et divise.

Solution disponible après 3 tentatives