Toán tử rest trong JavaScript
Bài học này chúng ta sẽ bắt đầu với một số giải thích.
Tất cả các bài học trước trong chuyên mục này tôi đã không
nói với các bạn toàn bộ sự thật về toán tử ...
Trên thực tế, toán tử này tùy thuộc vào vị trí trong mã có thể được gọi là toán tử spread, hoặc toán tử rest.
Như bạn đã biết, khi toán tử spread
đứng trước một mảng hoặc chuỗi, nó chia tách
chúng thành các giá trị riêng lẻ. Toán tử rest,
mặc dù có cú pháp giống nhau dưới dạng ...,
nhưng được dùng cho mục đích khác.
Bây giờ chúng ta sẽ tìm hiểu xem nó dùng để làm gì. Giả sử chúng ta có một hàm, nhận hai tham số:
function func(a, b) {
console.log(a);
console.log(b);
}
Bạn nên đã biết rằng nếu truyền vào hàm các tham số dư thừa, điều này sẽ không dẫn đến lỗi:
func(1, 2, 3, 4, 5);
Toán tử rest cho phép lấy tất cả
các tham số dư thừa dưới dạng một mảng. Để làm điều này
trong hàm cần thêm một tham số nữa (bắt buộc phải
đứng cuối cùng), trước nó viết 3 dấu chấm:
function func(a, b, ...rest) {
}
Ba dấu chấm này chính là toán tử rest, và tên
biến có thể là bất kỳ tên nào, nhưng
thông thường cũng được gọi là rest.
Hãy gọi hàm của chúng ta với số lượng
tham số dư thừa và xem, cái gì rơi vào
các tham số a và b, và cái gì -
vào phần còn lại rest:
func(1, 2, 3, 4, 5);
function func(a, b, ...rest) {
console.log(a); // in ra 1
console.log(b); // in ra 2
console.log(rest); // in ra [3, 4, 5]
}
Nếu không có tham số dư thừa, thì vào biến
rest sẽ được ghi một mảng rỗng:
func(1, 2);
function func(a, b, ...rest) {
console.log(a); // in ra 1
console.log(b); // in ra 2
console.log(rest); // in ra []
}
Trong hàm thậm chí có thể không có tham số nào,
nhưng đồng thời có thể thêm rest vào nó.
Trong trường hợp này hàm có thể được gọi
với bất kỳ số lượng tham số nào và tất cả chúng
sẽ rơi vào mảng rest:
function func(...rest) {
console.log(rest);
}