JavaScript Closures: Hướng dẫn toàn diện

tsudev· 01/09/2026

Khái niệm về JavaScript Closures

JavaScript Closures là một khái niệm quan trọng trong lập trình web, cho phép bạn tạo ra các hàm có thể nhớ và sử dụng các biến từ phạm vi của hàm khác. Điều này giúp bạn viết mã nguồn linh hoạt và hiệu quả hơn.

Phạm vi của hàm trong JavaScript

Phạm vi của hàm là nơi mà các biến được định nghĩa và có thể được truy cập. Khi một hàm được định nghĩa trong một phạm vi khác, nó có thể truy cập vào các biến trong phạm vi đó. Ví dụ, bạn có thể định nghĩa một hàm như sau:
javascript
function tạoHàmNội() {
  let biếnNội = 10;
  function hàmNội() {
    console.log(biếnNội);
  }
  return hàmNội;
}
Trong ví dụ trên, hàm hàmNội có thể truy cập vào biến biếnNội trong phạm vi của hàm tạoHàmNội, ngay cả khi hàm tạoHàmNội đã kết thúc thực thi.

Tạo và sử dụng closures

Closures có thể được tạo và sử dụng trong nhiều trường hợp khác nhau. Ví dụ, bạn có thể sử dụng closures để tạo ra các hàm có thể nhớ và sử dụng các biến từ phạm vi của hàm khác. Bạn cũng có thể sử dụng closures để tạo ra các hàm có thể được sử dụng như các đối tượng.

Một ví dụ khác về sử dụng closures là tạo ra một hàm có thể đếm số lần nó được gọi:

javascript
function tạoĐếm() {
  let đếm = 0;
  return function() {
    đếm++;
    console.log(dếm);
  }
}

const đếmSố = tạoĐếm();
đếmSố(); // 1
đếmSố(); // 2
đếmSố(); // 3

Trong ví dụ trên, hàm tạoĐếm trả về một hàm có thể đếm số lần nó được gọi. Hàm này sử dụng một biến đếm để lưu trữ số lần nó được gọi.

Ưu điểm và nhược điểm của closures

Closures có nhiều ưu điểm trong lập trình web, bao gồm giúp bạn tạo ra các hàm có thể nhớ và sử dụng các biến từ phạm vi của hàm khác. Tuy nhiên, closures cũng có một số nhược điểm, bao gồm có thể gây ra rò rỉ bộ nhớ nếu không được sử dụng đúng cách.

Để sử dụng closures một cách hiệu quả và an toàn, bạn cần phải hiểu rõ về cách thức hoạt động của chúng và sử dụng chúng đúng cách. Bạn cũng cần phải tránh sử dụng closures quá nhiều, vì nó có thể gây ra rò rỉ bộ nhớ và làm cho mã nguồn trở nên khó đọc.

Kết luận

JavaScript Closures là một khái niệm quan trọng trong lập trình web, giúp bạn hiểu và sử dụng closures hiệu quả. Với hướng dẫn toàn diện trong bài viết này, bạn có thể sử dụng closures một cách hiệu quả và an toàn. Để tìm hiểu thêm về closures, bạn có thể tham khảo các nguồn sau: https://dev.to/parsajiravand/javascript-closures-the-complete-guide-with-cheat-sheet-2p7p