Bài này Thế giới JS share về Rest parameter(Tham số còn lại) là một cách cải tiến để xử lý tham số hàm, cho phép chúng tôi dễ dàng xử lý các đầu vào khác nhau dưới dạng tham số trong một hàm. Cú pháp tham số còn lại cho phép chúng ta biểu diễn một số lượng đối số không xác định dưới dạng một mảng. Với sự trợ giúp của tham số còn lại, một hàm có thể được gọi với bất kỳ số lượng đối số nào, bất kể nó được định nghĩa như thế nào. Tham số còn lại được thêm vào ES2015 hoặc ES6 giúp cải thiện khả năng xử lý tham số.
Lưu ý: Để chạy code trong bài viết này, hãy sử dụng bảng điều khiển(console) do trình duyệt cung cấp hoặc sử dụng công cụ trực tuyến như repl.it .
Cú pháp:
// https://vpsus.vn/ // https://www.facebook.com/groups/893052378563701 // https://twitter.com/thegioijs //... is the rest parameter (triple dots) function functionname(...parameters) { statement; }
Lưu ý: Khi … ở cuối tham số hàm, nó là tham số còn lại. Nó lưu trữ n số tham số dưới dạng một mảng. Hãy xem cách tham số còn lại hoạt động:
// https://vpsus.vn/ // https://www.facebook.com/groups/893052378563701 // https://twitter.com/thegioijs // Without rest parameter function fun(a, b){ return a + b; } console.log(fun(1, 2)); // 3 console.log(fun(1, 2, 3, 4, 5)); // 3
Đầu ra:
3 3
Trong đoạn code trên, sẽ không có lỗi nào được đưa ra ngay cả khi chúng ta truyền đối số nhiều hơn tham số, nhưng chỉ hai đối số đầu tiên sẽ được đánh giá. Nó khác trong trường hợp với tham số còn lại. Với việc sử dụng tham số còn lại, chúng ta có thể tập hợp bất kỳ số lượng đối số nào vào một mảng và làm những gì chúng ta muốn với chúng.
Code Javascript thể hiện phép cộng các số bằng cách sử dụng tham số còn lại.
// https://vpsus.vn/ // https://www.facebook.com/groups/893052378563701 // https://twitter.com/thegioijs // es6 rest parameter function fun(...input){ let sum = 0; for(let i of input){ sum+=i; } return sum; } console.log(fun(1,2)); //3 console.log(fun(1,2,3)); //6 console.log(fun(1,2,3,4,5)); //15
Đầu ra:
3 6 15
Chúng ta có thể lấy tổng của tất cả các phần tử mà chúng ta nhập vào đối số khi chúng ta gọi hàm fun(). Chúng ta lấy tổng của tất cả các phần tử trong mảng bằng cách sử dụng vòng lặp for..of được sử dụng để duyệt qua các phần tử có thể lặp bên trong một mảng.
Lưu ý: Tham số còn lại phải là đối số cuối cùng, vì công việc của nó là thu thập tất cả các đối số còn lại vào một mảng. Vì vậy, có một định nghĩa hàm như code bên dưới không có ý nghĩa gì và sẽ gây ra lỗi.
// https://vpsus.vn/ // https://www.facebook.com/groups/893052378563701 // https://twitter.com/thegioijs // non-sense code function fun(a,...b,c){ //code return; }
Hãy sử dụng tham số còn lại với một số đối số khác bên trong một hàm, như sau:
// https://vpsus.vn/ // https://www.facebook.com/groups/893052378563701 // https://twitter.com/thegioijs // rest with function and other arguments function fun(a,b,...c){ console.log(`${a} ${b}`); //Mukul Latiyan console.log(c); //[ 'Lionel', 'Messi', 'Barcelona' ] console.log(c[0]); //Lionel console.log(c.length); //3 console.log(c.indexOf('Lionel')); //0 } fun('Mukul','Latiyan','Lionel','Messi','Barcelona');
Đầu ra:
Mukul Latiyan ['Lionel', 'Messi', 'Barcelona'] Lionel 3 0
Trong mẫu code ở trên, chúng ta đã chuyển tham số còn lại làm tham số thứ ba và sau đó về cơ bản chúng ta đã gọi hàm fun() với năm đối số và hai đối số đầu tiên được xử lý bình thường và phần còn lại đều được thu thập bởi tham số còn lại và do đó chúng tôi nhận được ‘ Lionel’ khi chúng ta cố gắng truy cập c[0] và điều quan trọng cần lưu ý là tham số còn lại trả về một mảng và chúng ta có thể sử dụng các phương thức mảng mà javascript cung cấp cho chúng ta.
Trên đây là tất cả những gì về Rest parameter trong javascript mà bạn cần biết. Nếu bạn có bất kỳ câu hỏi liên quan tới Rest parameter, hãy chủ động liên hệ và inbox cho chúng tôi, để giúp đỡ bạn sớm nhất
Tiếp theo, hãy cùng Thế giới JS tìm hiểu thêm các kiến thức về Javascript trong các bài tiếp theo trong series học miễn phí Javascript từ cơ bản tới nâng cao.
Nếu bạn cảm thấy hữu ích và yêu thích Thế giới JS, hãy tham gia và theo dõi chúng tôi để nhận thêm nhiều kiến thức MIỄN PHÍ hơn nữa nhé:
Share to learn more than!