Bao đóng

Trong lập trình máy tính, bao đóng (closure) là một kỹ thuật để triển khai liên kết tên có phạm vi từ vựng (lexically scoped) trong một ngôn ngữ có hàm hạng nhất.

Trong JavaScript, một hàm tạo ra ngữ cảnh bao đóng. Như được minh họa bởi đoạn code sau, hàm bên trong vẫn duy trì khả năng truy cập vào biến count ngay cả sau khi createCounter() đã kết thúc thực thi.

js
function createCounter() {
  let count = 0;
  return function () {
    count += 1;
    return count;
  };
}

const counter = createCounter();
console.log(counter()); // 1
console.log(counter()); // 2
console.log(counter()); // 3

Xem thêm