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

ฟังก์ชันซ้อนกัน (Nested Functions) ใน JavaScript คืออะไร

JavaScript 1.2 อนุญาตให้กำหนดฟังก์ชันซ้อนอยู่ภายในฟังก์ชันอื่นได้ อย่างไรก็ตาม มีข้อจำกัดคือ ไม่สามารถประกาศฟังก์ชันภายในลูป (loops) หรือเงื่อนไข (conditionals) ได้ ข้อจำกัดเหล่านี้ใช้กับการประกาศฟังก์ชันด้วยคำสั่ง function statement เท่านั้น

ตัวอย่าง

ลองรันโค้ดด้านล่างเพื่อเรียนรู้วิธีการใช้งานฟังก์ชันซ้อนใน JavaScript:

<html>
  <head>
    <script>
      function hypotenuse(a, b) {
        function square(x) { return x * x; }
        return Math.sqrt(square(a) + square(b));
      }
      function secondFunction() {
        var result = hypotenuse(3, 4);
        document.write(result);
      }
    </script>
  </head>
  <body>
    <p>คลิกปุ่มด้านล่างเพื่อเรียกใช้ฟังก์ชัน</p>
    <form>
      <input type="button" onclick="secondFunction()" value="Find Hypotenuse">
    </form>
  </body>
</html>

คำอธิบาย: ฟังก์ชัน square ถูกประกาศภายใน hypotenuse ทำให้สามารถเข้าถึงได้เฉพาะภายในขอบเขตของฟังก์ชันแม่เท่านั้น ซึ่งช่วยลดการปนเปื้อนของเนมสเปซ (namespace pollution)