การส่งฟังก์ชันเป็นพารามิเตอร์ใน JavaScript

ฟังก์ชันสามารถถูกส่งเป็นพารามิเตอร์ไปยังฟังก์ชันอื่นได้ เช่นเดียวกับตัวเลข สตริง และอาร์เรย์

ลองพิจารณารายละเอียดด้วยตัวอย่างเชิงปฏิบัติ สมมติว่ามีฟังก์ชัน test ที่รับ พารามิเตอร์สองตัว:

javascripttest(พารามิเตอร์1, พารามิเตอร์2);

ลองส่งฟังก์ชันที่ไม่ระบุชื่อซึ่งคืนค่า 1 ไปยังพารามิเตอร์แรกของฟังก์ชัน test และส่งฟังก์ชันที่ไม่ระบุชื่อซึ่งคืนค่า 2 ไปยังพารามิเตอร์ที่สอง:

javascripttest(
  function() {return 1;},
  function() {return 2;}
);

โค้ดข้างต้นยังใช้งานไม่ได้ เนื่องจาก เรายังไม่ได้สร้างฟังก์ชันเอง สร้างมันขึ้นมา:

javascriptfunction test(func1, func2) {
  
}

เมื่อกำหนดฟังก์ชัน เราได้ระบุพารามิเตอร์สองตัว - func1 และ func2 พารามิเตอร์เหล่านี้ ไม่รู้ว่าอะไรจะถูกส่งเข้ามาในพวกมัน เราสามารถส่งตัวเลขได้ เช่น:

javascripttest(1, 2); // เรียกใช้ฟังก์ชัน

function test(func1, func2) {
  console.log(func1); // จะแสดง 1
  console.log(func2); // จะแสดง 2
}

หรือเราสามารถส่งฟังก์ชันได้:

javascripttest(
  function() {return 1;}, // พารามิเตอร์แรก
  function() {return 2;}  // พารามิเตอร์ที่สอง
);

function test(func1, func2) {
  console.log(func1); // จะแสดง 'function() {return 1;}'
  console.log(func2); // จะแสดง 'function() {return 2;}'
}

อย่างที่คุณเห็น ตอนนี้โค้ดต้นฉบับ ของฟังก์ชันถูกแสดงในคอนโซล ลองทำให้ มันแสดงผลลัพธ์ของฟังก์ชันเหล่านั้นแทน โดยเขียนวงเล็บให้กับฟังก์ชัน:

javascripttest(
  function() {return 1;},
  function() {return 2;}
);

function test(func1, func2) {
  console.log( func1() ); // จะแสดง 1
  console.log( func2() ); // จะแสดง 2
}

ลองแสดงผลรวมของผลลัพธ์ จากฟังก์ชันแรกและฟังก์ชันที่สองในคอนโซล:

javascripttest(
  function() {return 1;},
  function() {return 2;}
);

function test(func1, func2) {
  console.log( func1() + func2() ); // จะแสดง 3
}
Задание 1

สร้างฟังก์ชัน test ที่รับ ฟังก์ชัน 3 ฟังก์ชันเป็นพารามิเตอร์ ส่งฟังก์ชันที่คืนค่า 1 เป็นพารามิเตอร์แรก ฟังก์ชันที่คืนค่า 2 เป็นพารามิเตอร์ที่สอง และฟังก์ชันที่คืนค่า 3 เป็นพารามิเตอร์ที่สาม แสดงผลรวมของผลลัพธ์ของฟังก์ชันในคอนโซล