Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Cách định nghĩa hàm lồng nhau (nested functions) trong JavaScript

JavaScript 1.2 cho phép định nghĩa hàm bên trong hàm khác. Tuy nhiên, có hạn chế: định nghĩa hàm không được xuất hiện trong vòng lặp hoặc câu lệnh điều kiện. Hạn chế này chỉ áp dụng cho khai báo hàm với từ khóa function.

Ví dụ

<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(1, 2);
        document.write(result);
      }
    </script>
  </head>
  <body>
    <p>Nhấp nút sau để gọi hàm</p>
    <form>
      <input type="button" onclick="secondFunction()" value="Call Function">
    </form>
  </body>
</html>

Lưu ý: Hàm square chỉ tồn tại trong scope của hypotenuse. Không thể gọi square từ bên ngoài.