Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

วิธีเรียกใช้ฟังก์ชันด้วย Function Constructor ใน JavaScript

คอนสตรัคเตอร์ Function() คาดหวังอาร์กิวเมนต์สตริงจำนวนเท่าไรก็ได้ อาร์กิวเมนต์ตัวสุดท้ายคือ เนื้อหาของฟังก์ชัน (function body) ซึ่งสามารถมีคำสั่ง JavaScript ได้หลายคำสั่ง คั่นด้วย semicolon

ไวยากรณ์

new Function([arg1[, arg2[, ...argN]],] functionBody)

ตัวอย่าง

สร้างฟังก์ชันคูณเลขด้วย Function Constructor:

<html>
  <head>
    <script>
      var func = new Function("x", "y", "return x * y;");

      function multiplyFunction() {
        var result = func(15, 35);
        document.write(result);
      }
    </script>
  </head>
  <body>
    <p>คลิกปุ่มด้านล่างเพื่อเรียกใช้ฟังก์ชัน</p>
    <form>
      <input type="button" onclick="multiplyFunction()" value="Call Function">
    </form>
  </body>
</html>

ข้อควรระวัง

  • ประสิทธิภาพ: ช้ากว่าการประกาศฟังก์ชันทั่วไป เพราะต้อง parse โค้ดใหม่ทุกครั้ง
  • ความปลอดภัย: มีความเสี่ยงด้าน XSS หากนำข้อมูลจากผู้ใช้มาสร้างฟังก์ชัน
  • ขอบเขต (Scope): ฟังก์ชันที่สร้างด้วย Constructor จะมีขอบเขตเฉพาะ global scope เท่านั้น (ไม่เข้าถึง closure ได้)

แนะนำ: ใช้ Function Declaration หรือ Function Expression แทนในกรณีทั่วไป ใช้ Constructor เฉพาะกรณีที่ต้องสร้างฟังก์ชันแบบไดนามิกจากสตริงเท่านั้น