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
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:
function f(x = 10) {
return x;
}
f(); // 10
f(undefined); // 10
f(null); // null
f(0); // 0Istirahat: ...names
Untuk menerima sejumlah argumen yang bervariasi, kumpulkan argumen tersebut ke dalam array dengan ...:
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); // 10Di dalam fungsi, numeri adalah array nyata (bukan objek ajaib arguments dari fungsi lama).
Sisanya harus menjadi parameter terakhir:
function f(primo, ...altri) {
/* ok */
}
// function f(...altri, ultimo) {} // SyntaxErrorSebarkan pada waktu panggilan
Wajah lain dari ... adalah operator spread, yang "meledak" array menjadi argumen terpisah pada waktu panggilan:
function somma(a, b, c) {
return a + b + c;
}
const nums = [1, 2, 3];
somma(...nums); // 6, equivalent to somma(1, 2, 3)Cobalah
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.
Tunjukkan petunjuk
fungsi jumlah(a, b = 0) { kembalikan a + b; }
Solusi tersedia setelah 3 upaya
Tinjau latihan
Tentukan fungsi `mean(...nums)` yang mengembalikan mean aritmatika dari argumennya, atau 0 jika tidak ada yang diteruskan.
Tunjukkan petunjuk
Jika nums.length adalah 0, kembalikan 0; jika tidak, jumlahkan dan bagi.
Solusi tersedia setelah 3 upaya