แกงกะหรี่
แกง เป็นเทคนิคการประเมินฟังก์ชันที่มีอาร์กิวเมนต์หลายตัวเป็นลำดับของฟังก์ชันที่มีอาร์กิวเมนต์เดียว กล่าวคือ เมื่อฟังก์ชันแทนที่จะรับอาร์กิวเมนต์ทั้งหมดในคราวเดียว ให้รับฟังก์ชันแรกและคืนค่าฟังก์ชันใหม่ที่ใช้ฟังก์ชันที่สองและ ส่งกลับฟังก์ชันใหม่ซึ่งรับฟังก์ชันที่สาม และอื่นๆ จนกว่าอาร์กิวเมนต์ทั้งหมดจะบรรลุผล
การใช้งานฟังก์ชั่นการแกง
ก) ช่วยหลีกเลี่ยงการส่งผ่านตัวแปรเดิมซ้ำแล้วซ้ำอีก
b) มีประโยชน์อย่างมากในการจัดการเหตุการณ์
ไวยากรณ์:
function Myfunction(a) {
return (b) => {
return (c) => {
return a * b * c
}
}
} ตัวอย่าง
ในตัวอย่างต่อไปนี้ เนื่องจากไม่มี currying ใช้พารามิเตอร์ทั้งหมดถูกส่งพร้อมกัน (volume(11,2,3)) ไปยังฟังก์ชันที่มีอยู่เพื่อคำนวณปริมาตร
<html>
<body>
<script>
function volume(length, width, height) {
return length * width * height;
}
document.write((volume(11,2,3)));
</script>
</body>
</html> ผลลัพธ์
66
ตัวอย่าง
ในตัวอย่างต่อไปนี้ ตั้งแต่ แกง ใช้พารามิเตอร์ถูกส่งทีละตัว (volume(11)(2)(3)) จนกระทั่งฟังก์ชันสุดท้ายเรียกว่าพารามิเตอร์สุดท้าย
<html>
<body>
<script>
function volume(length) {
return function(width) {
return function(height) {
return height * width * length;
}
}
}
document.write(volume(11)(2)(3))
</script>
</body>
</html> ผลลัพธ์
66