[JavaScript] Rest parameters คืออะไร
บทความที่ก่อนได้เคยพูดถึง Spread syntax (...) ไปแล้ว รอบนี้มาพูดถึงสิ่งที่หน้าตาเหมือนกันแต่ใช้งานแตกต่างกันโดยสิ้นเชิงคือ Rest parameters (Rest syntax) เป็นการประกาศ function ขึ้นมาให้สามารถรับ arguments "เท่าไหร่ก็ได้" โดยค่า arguments ที่ถูกส่งมาจะถูกรวบเป็น array ก้อนเดียว แล้วนำไปใช้ต่อ ซึ่งโดยปกติจะพบเห็นได้ทั่วไปใน built-in function ที่มีมาให้ใช้อยู่แล้ว ยกตัวอย่างเช่น
Math.max(arg1, arg2, ..., argN); //หาค่าสูงสุด
console.log(arg1, arg2, ..., argN); // log ตัวแปรออกมาดูค่าในหน้าต่าง Console
แต่เราเองก็สามารถนำมาใช้ประโยชน์ในการสร้าง function เพื่อไว้ใช้งานเองหรือเผื่อให้คนอื่นนำไปใช้งานได้สะดวกขึ้นก็ได้ ขอยกตัวอย่างเป็น function sum ไว้ใช้บวกรวมตัวเลขทั้งหมดที่ส่งเข้ามาใน function
function sum(...args) {
let total = 0;
for (let num of args) {
total += num;
}
return total;
}
console.log(sum(1, 2)); //3
console.log(sum(1, 2, 3)); //6
console.log(sum(1, 2, 3, 4, 5)); //15
แต่ function ด้านบนจะเจอปัญหาว่าถ้าค่าที่ส่งเข้ามาไม่ใช่ตัวเลขล่ะ? บางค่าอาจทำให้ function นี้ error ได้ เพราะฉะนั้นจะลองปรับ function ให้กรองเอาเฉพาะตัวเลขมาคำนวณ
function sum(...args) {
return args.filter(e => typeof e === 'number')// ใช้ filter ของ array เพื่อกรองเอาเฉพาะ element ที่ตรงเงื่อนไข
.reduce((acc, curr)=> acc + curr); // ใช้ .reduce เพื่อบวกค่ารวมกัน ส่วนของ function นี้จะพูดถึงในบทความถัดไปอีกที
}
console.log(sum(1, 2)); //3
console.log(sum(1, 2, 3)); //6
console.log(sum(1, 2, 3, 4, 5)); //15
เท่านี้น่าจะมองเห็นประโยชน์ของการทำ Rest parameters ขึ้นมาบ้างแล้ว อาจจะหาโอกาสใช้ยากหน่อย แต่รู้ไว้ก็อาจเป็นประโยชน์ในอนาคตครับ
ความคิดเห็น
แสดงความคิดเห็น