Higher-Order Function (HOC) คือฟังก์ชันที่รับฟังก์ชันเป็นอาร์กิวเมนต์ หรือคืนค่าเป็นฟังก์ชัน (Currying)
ตัวอย่างโค้ด (Currying)
const productHOC = num1 => {
return num2 => num1 * num2;
};
console.log(productHOC(24)(5));
ผลลัพธ์
120
การประยุกต์ใช้ Currying
// สร้างฟังก์ชันเฉพาะเจาะจง const multiplyBy10 = productHOC(10); const multiplyBy100 = productHOC(100); console.log(multiplyBy10(5)); // 50 console.log(multiplyBy100(5)); // 500 // ใช้กับ Array.map const numbers = [1, 2, 3, 4, 5]; const doubled = numbers.map(productHOC(2)); console.log(doubled); // [2, 4, 6, 8, 10]
ประโยชน์ของ HOC/Currying
- Partial Application: กำหนดค่าบางอาร์กิวเมนต์ล่วงหน้า
- Function Composition: รวมฟังก์ชันเล็กๆ เป็นใหญ่
- Reusability: สร้างฟังก์ชันเฉพาะทางจากฟังก์ชันทั่วไป
- Point-free Style: เขียนโค้ดไม่ต้องระบุอาร์กิวเมนต์ชัดเจน