Direkt zum Hauptinhalt springen
eLearner.app
Modul 4 · Lektion 3 von 415/32 im Kurs~12 min
Lektionen des Moduls (3/4)

Standard- und Rest-Parameter

JavaScript ermöglicht es dir, Parameter optional zu machen (mit einem Standardwert) und eine variable Anzahl von Argumenten mit dem Rest-Operator (...) zu akzeptieren.

Standardparameter (Default parameters)

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

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

Der Standardwert wird nur angewendet, wenn das Argument undefined ist (einschließlich des Falls „nicht übergeben“). Für null oder 0 greift der Standardwert nicht:

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

Rest: ...nomi

Um eine variable Anzahl von Argumenten zu akzeptieren, sammle sie mit ... in einem Array:

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

Innerhalb der Funktion ist numeri ein echtes Array (nicht das magische arguments-Objekt der alten Funktionen).

Der Rest-Operator muss der letzte Parameter sein:

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

Spread beim Aufruf

Die andere Seite von ... ist der Spread-Operator, der ein Array beim Aufruf in separate Argumente „zerlegt“:

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

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

Probier es aus

Übung#js.m4.l3.e1
Versuche: 0Wird geladen…

Definiere eine Funktion `sum(a, b)`, bei der `b` den Standardwert 0 hat. Sie muss die Asserts bestehen: sum(5) === 5, sum(2, 3) === 5, sum(0) === 0.

Editor wird geladen…
Hinweis anzeigen

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

Lösung nach 3 Versuchen verfügbar

Wiederholungsübung

Übung#js.m4.l3.e2
Versuche: 0Wird geladen…

Definiere eine Funktion `mean(...nums)`, die das arithmetische Mittel ihrer Argumente zurückgibt, oder 0, wenn keine Argumente übergeben werden.

Editor wird geladen…
Hinweis anzeigen

Wenn nums.length gleich 0 ist, return 0; andernfalls summieren und dividieren.

Lösung nach 3 Versuchen verfügbar