Przejdź do głównej treści
eLearner.app
Moduł 4 · Lekcja 3 z 415/32 w kursie~12 min
Lekcje modułu (3/4)

Parametry domyślne i rest

JavaScript umożliwia tworzenie parametrów opcjonalnych (z przypisaną wartością domyślną) oraz akceptowanie zmiennej liczby argumentów za pomocą operatora rest (...).

Parametry domyślne (default parameters)

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

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

Wartość domyślna ma zastosowanie tylko wtedy, gdy argument wynosi undefined (w tym w przypadku braku jego przekazania). Dla wartości null lub 0 wartość domyślna się nie aktywuje:

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

Rest: ...nomi

Aby akceptować zmienną liczbę argumentów, zbierz je w tablicę za pomocą ...:

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

Wewnątrz funkcji numeri to prawdziwa tablica (a nie magiczny obiekt arguments ze starych funkcji).

Parametr rest musi być ostatnim parametrem:

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

Spread przy wywołaniu

Druga strona ... to operator spread, który „rozbija” tablicę na osobne argumenty w momencie wywołania:

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

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

Spróbuj sam

Ćwiczenie#js.m4.l3.e1
Próby: 0Ładowanie...

Zdefiniuj funkcję `sum(a, b)`, w której `b` ma wartość domyślną 0. Musi przejść asercje: sum(5) === 5, sum(2, 3) === 5, sum(0) === 0.

Ładowanie edytora...
Pokaż wskazówkę

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

Rozwiązanie dostępne po 3 próbach

Ćwiczenie powtórzeniowe

Ćwiczenie#js.m4.l3.e2
Próby: 0Ładowanie...

Zdefiniuj funkcję `mean(...nums)`, która zwraca średnią arytmetyczną swoich argumentów, lub 0, jeśli nie przekazano żadnego.

Ładowanie edytora...
Pokaż wskazówkę

Jeśli nums.length wynosi 0, zwróć 0; w przeciwnym razie zsumuj i podziel.

Rozwiązanie dostępne po 3 próbach