Der Rest-Operator in JavaScript

Diese Lektion beginnen wir mit einer Erklärung. In allen vorherigen Lektionen dieses Abschnitts habe ich nicht die ganze Wahrheit über den Operator ... erzählt.

Tatsächlich kann dieser Operator, abhängig von seiner Position im Code, entweder Spread-Operator oder Rest-Operator genannt werden.

Wie Sie bereits wissen, wenn der Spread-Operator vor einem Array oder String steht, teilt er sie in einzelne Werte auf. Der Rest-Operator, obwohl er die gleiche Syntax in Form von ... hat, ist für etwas anderes bestimmt.

Jetzt werden wir uns ansehen, wofür. Nehmen wir an, wir haben eine Funktion, die zwei Parameter akzeptiert:

javascriptfunction func(a, b) {
  console.log(a);
  console.log(b);
}

Sie sollten bereits wissen, dass es nicht zu einem Fehler führt, wenn der Funktion zusätzliche Parameter übergeben werden:

javascriptfunc(1, 2, 3, 4, 5);

Der rest-Operator ermöglicht es, alle überschüssigen Parameter in Form eines Arrays zu erhalten. Dafür wird der Funktion ein weiterer Parameter hinzugefügt (unbedingt als letztes), vor dem 3 Punkte geschrieben werden:

javascriptfunction func(a, b, ...rest) {
  
}

Diese drei Punkte sind der Rest-Operator, und der Name der Variable kann beliebig sein, aber normalerweise wird er ebenfalls rest genannt.

Rufen wir unsere Funktion mit einer übermäßigen Anzahl von Parametern auf und sehen wir, was in die Parameter a und b gelangt, und was - in den Rest rest:

javascriptfunc(1, 2, 3, 4, 5);

function func(a, b, ...rest) {
  console.log(a);    // gibt 1 aus
  console.log(b);    // gibt 2 aus
  console.log(rest); // gibt [3, 4, 5] aus
}

Wenn es keine zusätzlichen Parameter gibt, wird in die Variable rest ein leeres Array geschrieben:

javascriptfunc(1, 2);

function func(a, b, ...rest) {
  console.log(a);    // gibt 1 aus
  console.log(b);    // gibt 2 aus
  console.log(rest); // gibt []
}

Die Funktion kann überhaupt keine Parameter haben, aber dennoch kann rest hinzugefügt werden. In diesem Fall kann die Funktion mit beliebig vielen Parametern aufgerufen werden, und alle werden in das Array rest gelangen:

javascriptfunction func(...rest) {
  console.log(rest);
}