การส่งฟังก์ชันเป็นพารามิเตอร์ใน JavaScript
ฟังก์ชันสามารถถูกส่งเป็นพารามิเตอร์ไปยังฟังก์ชันอื่นได้ เช่นเดียวกับตัวเลข สตริง และอาร์เรย์
ลองพิจารณารายละเอียดด้วยตัวอย่างเชิงปฏิบัติ
สมมติว่ามีฟังก์ชัน test ที่รับ
พารามิเตอร์สองตัว:
test(พารามิเตอร์1, พารามิเตอร์2);
ลองส่งฟังก์ชันที่ไม่ระบุชื่อซึ่งคืนค่า
1 ไปยังพารามิเตอร์แรกของฟังก์ชัน test
และส่งฟังก์ชันที่ไม่ระบุชื่อซึ่งคืนค่า 2
ไปยังพารามิเตอร์ที่สอง:
test(
function() {return 1;},
function() {return 2;}
);
โค้ดข้างต้นยังใช้งานไม่ได้ เนื่องจาก เรายังไม่ได้สร้างฟังก์ชันเอง สร้างมันขึ้นมา:
function test(func1, func2) {
}
เมื่อกำหนดฟังก์ชัน เราได้ระบุพารามิเตอร์สองตัว
- func1 และ func2 พารามิเตอร์เหล่านี้
ไม่รู้ว่าอะไรจะถูกส่งเข้ามาในพวกมัน
เราสามารถส่งตัวเลขได้ เช่น:
test(1, 2); // เรียกใช้ฟังก์ชัน
function test(func1, func2) {
console.log(func1); // จะแสดง 1
console.log(func2); // จะแสดง 2
}
หรือเราสามารถส่งฟังก์ชันได้:
test(
function() {return 1;}, // พารามิเตอร์แรก
function() {return 2;} // พารามิเตอร์ที่สอง
);
function test(func1, func2) {
console.log(func1); // จะแสดง 'function() {return 1;}'
console.log(func2); // จะแสดง 'function() {return 2;}'
}
อย่างที่คุณเห็น ตอนนี้โค้ดต้นฉบับ ของฟังก์ชันถูกแสดงในคอนโซล ลองทำให้ มันแสดงผลลัพธ์ของฟังก์ชันเหล่านั้นแทน โดยเขียนวงเล็บให้กับฟังก์ชัน:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() ); // จะแสดง 1
console.log( func2() ); // จะแสดง 2
}
ลองแสดงผลรวมของผลลัพธ์ จากฟังก์ชันแรกและฟังก์ชันที่สองในคอนโซล:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() + func2() ); // จะแสดง 3
}
สร้างฟังก์ชัน test ที่รับ
ฟังก์ชัน 3 ฟังก์ชันเป็นพารามิเตอร์
ส่งฟังก์ชันที่คืนค่า 1 เป็นพารามิเตอร์แรก
ฟังก์ชันที่คืนค่า 2 เป็นพารามิเตอร์ที่สอง
และฟังก์ชันที่คืนค่า 3 เป็นพารามิเตอร์ที่สาม
แสดงผลรวมของผลลัพธ์ของฟังก์ชันในคอนโซล