Bài học theo mô-đun (3/4)
Thông số mặc định và còn lại
JavaScript cho phép bạn tạo các tham số tùy chọn (với giá trị mặc định)
và chấp nhận số biến đối số với toán tử còn lại (...).
Thông số mặc định
function saluta(nome, prefisso = 'Ciao') {
return `${prefisso}, ${nome}!`;
}
saluta('Anna'); // 'Ciao, Anna!'
saluta('Marco', 'Buongiorno'); // 'Buongiorno, Marco!'Giá trị mặc định chỉ áp dụng khi đối số là undefined (bao gồm cả trường hợp "không được thông qua").
Đối với null hoặc 0, mặc định không có tác dụng:
function f(x = 10) {
return x;
}
f(); // 10
f(undefined); // 10
f(null); // null
f(0); // 0Nghỉ ngơi: ...names
Để chấp nhận số lượng đối số thay đổi, hãy tập hợp chúng thành một mảng với ...:
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); // 10Bên trong hàm, numeri là một mảng thực (không phải đối tượng arguments kỳ diệu của các hàm cũ).
Phần còn lại phải là tham số cuối cùng:
function f(primo, ...altri) {
/* ok */
}
// function f(...altri, ultimo) {} // SyntaxErrorLan tỏa vào thời điểm cuộc gọi
Mặt khác của ... là toán tử ** lây lan**, toán tử này "làm nổ" một mảng thành các đối số riêng biệt tại thời điểm gọi:
function somma(a, b, c) {
return a + b + c;
}
const nums = [1, 2, 3];
somma(...nums); // 6, equivalent to somma(1, 2, 3)Hãy thử nó
Xác định hàm `sum(a, b)` trong đó `b` có giá trị mặc định là 0. Nó phải vượt qua các xác nhận sau: sum(5) === 5, sum(2, 3) === 5, sum(0) === 0.
Hiển thị gợi ý
hàm sum(a, b = 0) { return a + b; }
Giải pháp khả dụng sau 3 lần thử
Xem lại bài tập
Xác định hàm `mean(...nums)` trả về giá trị trung bình số học của các đối số của nó hoặc 0 nếu không có đối số nào được truyền.
Hiển thị gợi ý
Nếu nums.length là 0, trả về 0; nếu không thì tính tổng và chia.
Giải pháp khả dụng sau 3 lần thử