[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 ขึ้นมาบ้างแล้ว อาจจะหาโอกาสใช้ยากหน่อย แต่รู้ไว้ก็อาจเป็นประโยชน์ในอนาคตครับ

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

[Blue Archive] รวมล็อบบี้ความทรงจำ (Live2D)

[Blue Archive] รีวิวชินัตสึ (Chinatsu)

[Blue Archive] รีวิวมารินะ (Marina)

[Blue Archive] รีวิวสึมิเระ (Sumire)

[Arknights] รีวิว Penance