Direct naar de hoofdinhoud
Module 4 · Les 3 van 415/32 in de cursus~12 min
Modulelessen (3/4)

Standaard- en rustparameters

Met JavaScript kunt u parameters optioneel maken (met een standaardwaarde) en accepteer een variabel aantal argumenten met de rest-operator (...).

Standaardparameters

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

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

De standaardwaarde is alleen van toepassing als het argument undefined is (inclusief de hoofdlettergebruik "niet doorgegeven"). Voor null of 0 geldt de standaard niet:

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

Rust: ...names

Om een ​​variabel aantal argumenten te accepteren, verzamel ze in een array met ...:

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

Binnen de functie is numeri een echte array (niet het magische arguments object van oude functies).

De rest moet de laatste parameter zijn:

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

Verspreid tijdens het gesprek

Het andere gezicht van ... is de spread-operator, die een array tijdens de oproep "explodeert" in afzonderlijke argumenten:

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

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

Probeer het

Oefening#js.m4.l3.e1
Pogingen: 0Laden…

Definieer een functie `sum(a, b)` waarbij `b` de standaardwaarde 0 heeft. De functie moet de volgende beweringen doorgeven: sum(5) === 5, sum(2, 3) === 5, sum(0) === 0.

Editor laden…
Toon hint

functie som(a, b = 0) { retourneer a + b; }

Oplossing beschikbaar na 3 pogingen

Oefening beoordelen

Oefening#js.m4.l3.e2
Pogingen: 0Laden…

Definieer een functie `mean(...nums)` die het rekenkundig gemiddelde van zijn argumenten retourneert, of 0 als er geen wordt doorgegeven.

Editor laden…
Toon hint

Als nums.length 0 is, retourneert u 0; anders optellen en delen.

Oplossing beschikbaar na 3 pogingen