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

Closure (Đóng gói) trong JavaScript là gì?

Closure trong JavaScript là sự kết hợp của một hàm và môi trường lexical (scope) nơi hàm đó được khai báo. Trong JS, tất cả các hàm đều hoạt động như closure. Một closure sử dụng scope nơi nó được khai báo khi được gọi, không phải scope nơi nó được gọi.

Ví dụ

<!DOCTYPE html>
<html>
  <body>
    <h2>Làm việc với JavaScript Closures</h2>
    <script>
      var num = 10;
      function a() {
        var num = 15;
        b(function() {
          alert(num); // Hiện 15 - dùng scope của a()
        });
      }
      function b(f) {
        var num = 30;
        f();
      }
      a();
    </script>
  </body>
</html>

Kết quả: Alert hiển thị 15 (biến num trong scope của hàm a), không phải 30 (scope của b) hay 10 (global).