Câu hỏi phỏng vấn Javascript
Câu hỏi

Closure trong javascript là gì, cho ví dụ?

Câu trả lời

Closure trong JavaScript là một khái niệm quan trọng, cho phép một hàm truy cập các biến từ phạm vi bên ngoài của nó, ngay cả sau khi phạm vi đó đã kết thúc. Cụ thể, closure là một hàm có khả năng "nhớ" và truy cập các biến và tham số của hàm bên ngoài mà nó được tạo ra, ngay cả khi hàm bên ngoài đó đã thực thi xong

Đặc điểm của Closure

  • Truy cập biến từ phạm vi bên ngoài: Closure có thể truy cập các biến từ phạm vi bên ngoài của nó, bao gồm cả biến toàn cục, biến từ hàm bên ngoài (outer function), và biến cục bộ của chính nó
  • Bảo vệ dữ liệu: Closure giúp bảo vệ dữ liệu bằng cách giữ cho các biến không thể truy cập trực tiếp từ bên ngoài, tạo ra các biến "riêng tư"
  • Duy trì trạng thái: Closure cho phép duy trì trạng thái trong các hàm con mà không cần tạo ra các biến toàn cục, giúp giảm thiểu rủi ro xung đột biến và làm bẩn không gian tên

Ví dụ về Closure

javascript Copy
function createCounter() {
    let count = 0;
    return function() {
        count++;
        console.log(count);
    };
}

let counter = createCounter();
counter(); // 1
counter(); // 2
counter(); // 3

Trong ví dụ trên, hàm createCounter trả về một hàm con, là một closure, có thể truy cập và thay đổi biến count của hàm createCounter. Mỗi lần gọi counter(), biến count sẽ tăng lên một, và giá trị mới của count được in ra màn hình. Điều này cho thấy closure đã "nhớ" và duy trì trạng thái của biến count sau mỗi lần gọi

Ứng dụng của Closure

  • Bảo mật dữ liệu: Sử dụng closure để tạo ra các biến "riêng tư", giúp bảo vệ dữ liệu khỏi sự truy cập không mong muốn từ bên ngoài
  • Module pattern: Tạo ra các module độc lập, giúp cấu trúc mã nguồn gọn gàng và dễ bảo trì hơn
  • Callback và bất đồng bộ: Closure thường được sử dụng trong việc xử lý các hàm callback và lập trình bất đồng bộ, cho phép truy cập vào các biến từ phạm vi bên ngoài mà không lo bị mất trạng thái

Closure là một công cụ mạnh mẽ trong JavaScript, giúp lập trình viên quản lý và bảo vệ dữ liệu hiệu quả, đồng thời tạo ra các ứng dụng web động và phức tạp. Hiểu và sử dụng thành thạo closure sẽ mở ra nhiều khả năng mới trong lập trình JavaScript.

senior

senior

Gợi ý câu hỏi phỏng vấn

middle

Kết quả của đoạn code sau là gì? Hãy giải thích tại sao?

senior

Những lợi ích của WeakMap trong Javascript là gì?

middle

Kết quả đoạn code javascript sau là gì? Hãy giải thích?

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào