Computer >> Máy Tính >  >> Lập trình >> Javascript

Sự khác biệt giữa hàm đóng và các hàm lồng nhau trong JavaScript là gì?

Đóng JavaScript

Trong JavaScript, tất cả các hàm hoạt động giống như các bao đóng. Bao đóng là một hàm, sử dụng phạm vi mà nó được khai báo khi được gọi. Nó không phải là phạm vi mà nó được gọi.

Đây là một ví dụ

Bản trình diễn trực tiếp

<!DOCTYPEhtml>
<html>
   <body>
      <h2>JavaScriptClosures</h2>
         <script>
            varp = 20;
            functiona(){
               var p = 40;
               b(function(){
                  alert(p);
            });
         }
         functionb(f){
            var p = 60;
            f();
         }
         a();
      </script>
   </body>
</html>

Các hàm lồng nhau trong JavaScript

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

Ví dụ

Bạn có thể thử chạy ví dụ sau để tìm hiểu cách triển khai các hàm lồng nhau

Bản trình diễn trực tiếp

<html>
   <head>
      <script>
         <!--
            functionhypotenuse(a,b) {
               functionsquare(x){returnx*x;}
               returnMath.sqrt(square(a)+square(b));
            }
           
            functionsecondFunction() {
               varresult;
               result=hypotenuse(5,4);
               document.write(result );
            }
         //-->
      </script>
   </head>
   <body>
      <p>Clickthe following button to call the function</p>
      <form>
         <inputtype="button"onclick="secondFunction()"value="CallFunction">
      </form>
      <p>Usedifferent parameters inside the function and then try...</p>
   </body>
</html>