Lompati ke konten utama
Modul 4 · Pelajaran 3 dari 415/32 dalam kursus~12 min
Pelajaran modul (3/4)

Parameter default dan sisanya

JavaScript memungkinkan Anda membuat parameter opsional (dengan nilai default) dan menerima jumlah variabel argumen dengan operator lainnya (...).

Parameter bawaan

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

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

Defaultnya hanya berlaku jika argumennya adalah undefined (termasuk kasus "tidak lolos"). Untuk null atau 0 defaultnya tidak berlaku:

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

Istirahat: ...names

Untuk menerima sejumlah argumen yang bervariasi, kumpulkan argumen tersebut ke dalam array dengan ...:

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

Di dalam fungsi, numeri adalah array nyata (bukan objek ajaib arguments dari fungsi lama).

Sisanya harus menjadi parameter terakhir:

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

Sebarkan pada waktu panggilan

Wajah lain dari ... adalah operator spread, yang "meledak" array menjadi argumen terpisah pada waktu panggilan:

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

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

Cobalah

Latihan#js.m4.l3.e1
Upaya: 0Memuat…

Definisikan fungsi `sum(a, b)` dengan `b` yang memiliki nilai default 0. Fungsi tersebut harus melewati pernyataan berikut: sum(5) === 5, sum(2, 3) === 5, sum(0) === 0.

Memuat editor…
Tunjukkan petunjuk

fungsi jumlah(a, b = 0) { kembalikan a + b; }

Solusi tersedia setelah 3 upaya

Tinjau latihan

Latihan#js.m4.l3.e2
Upaya: 0Memuat…

Tentukan fungsi `mean(...nums)` yang mengembalikan mean aritmatika dari argumennya, atau 0 jika tidak ada yang diteruskan.

Memuat editor…
Tunjukkan petunjuk

Jika nums.length adalah 0, kembalikan 0; jika tidak, jumlahkan dan bagi.

Solusi tersedia setelah 3 upaya