© 2026 Laravel

Closure & Lexical Scope: Bí mật của hàm JS

1 phút đọc
#javascript #closure #scope #functional-programming

Mục lục bài viết

Sử dụng các mục để điều hướng nhanh

#1. Bản chất

  • Lexical Scope: Hàm “nhớ” được phạm vi nơi nó được định nghĩa, chứ không phải nơi nó được gọi.
  • Closure: Một function kết hợp với môi trường lexical của nó. Nó cho phép hàm truy cập biến bên ngoài ngay cả khi hàm cha đã thực thi xong.

#2. Ứng dụng thực tế: Data Privacy

function createCounter() {
    let count = 0; // Private biến
    return () => ++count;
}
const counter = createCounter(); // count không thể truy cập từ ngoài

#3. Phỏng vấn Senior

Q: “Tại sao closure hay gây ra memory leak trong React?” A: Vì closure giữ tham chiếu đến biến của scope cha. Nếu closure đó được gán vào một sự kiện (event listener) lâu dài mà không clean up, các object lớn ở scope cha sẽ không bao giờ được Garbage Collector dọn dẹp. Mẹo: Luôn null các biến hoặc removeEventListener khi component unmount.

Bài viết liên quan