ด้วย rest parameter สามารถแทน arguments หลายค่าเป็น array ได้ ES6 นำมาเพื่ออำนวยความสะดวก แสดงด้วย ... นำหน้าพารามิเตอร์
ตัวอย่าง
<html>
<body>
<script>
function addition(...numbers) {
var res = 0;
numbers.forEach(function(number) {
res += number;
});
return res;
}
document.write(addition(3));
document.write(addition(9, 10, 11, 12, 13));
</script>
</body>
</html>
Syntax และกฎ
// Rest parameter ต้องอยู่ท้ายสุดเท่านั้น
function fn(a, b, ...rest) { } // OK
function fn(...rest, a, b) { } // SyntaxError: Rest parameter must be last
function fn(a, ...rest, b) { } // SyntaxError
// ไม่สามารถมี rest parameter มากกว่า 1 ตัวต่อฟังก์ชัน
function fn(...a, ...b) { } // SyntaxError
Rest Parameter ใน Arrow Functions
// Arrow function กับ rest parameter
const sum = (...numbers) => numbers.reduce((a, b) => a + b, 0);
console.log(sum(1, 2, 3, 4, 5)); // 15
// Destructuring กับ rest
const [first, ...rest] = [1, 2, 3, 4];
console.log(first); // 1
console.log(rest); // [2, 3, 4]
const { a, ...others } = { a: 1, b: 2, c: 3 };
console.log(a); // 1
console.log(others); // { b: 2, c: 3 }