Toán tử spread trong JavaScript
Trong ES6 đã xuất hiện một toán tử đặc biệt ...,
được gọi là spread.
Khi toán tử spread đứng trước một mảng, nó sẽ tách mảng đó thành các giá trị riêng lẻ, biến mảng thành một tập hợp các tham số cần thiết cho việc gọi hàm.
Chắc hẳn nghe có vẻ khó hiểu, vì vậy chúng ta hãy
xem một ví dụ đơn giản. Giả sử chúng ta
có một hàm nhận 3 tham số
và trả về tổng của chúng:
function func(num1, num2, num3) {
return num1 + num2 + num3;
}
Giả sử chúng ta cũng có một mảng gồm ba phần tử:
let arr = [1, 2, 3];
Rõ ràng, chúng ta không thể chỉ đơn giản là truyền mảng này làm tham số cho hàm, như thế này:
let arr = [1, 2, 3];
func(arr);
Bởi vì trong trường hợp này toàn bộ mảng sẽ được đưa vào tham số đầu tiên của hàm, trong khi tham số này cần phải được truyền một số (và các tham số khác cũng vậy).
Tất nhiên, chúng ta có thể làm như sau:
let arr = [1, 2, 3];
func(arr[0], arr[1], arr[2]);
Nhưng có một cách đơn giản hơn - đó là sử dụng toán tử spread:
let arr = [1, 2, 3];
func(...arr);
Việc có biến không phải là bắt buộc - có thể áp dụng spread trực tiếp vào mảng:
func(...[1, 2, 3]);
Cho một mảng:
let arr = [1, 2, 3, 4, 5];
Cũng cho một hàm:
function func(num1, num2, num3, num4, num5) {
return num1 + num2 + num3 + num4 + num5;
}
Hãy tìm tổng các phần tử của mảng bằng hàm đã cho.