Closures trong Javascript là gì

Closures là một hàm bên trong (hàm con) nằm trong một hàm khác (hàm cha), có quyền truy cập vào các biến và tham số của hàm cha, ngay cả khi hàm cha đã được thực thi xong. Điều này cho phép hàm con ghi nhớ và sử dụng dữ liệu từ phạm vi của hàm cha.

Ví dụ minh họa:

function outerFunction() {
    let outerVariable = 'I am from outer function'; // Biến bên trong hàm cha

    return function innerFunction() { // Hàm con
        console.log(outerVariable); // Truy cập biến bên trong hàm cha
    };
}

const closure = outerFunction(); // Gọi hàm cha
closure(); // Kết quả: "I am from outer function"

Trong ví dụ trên, innerFunction có thể truy cập vào outerVariable mặc dù outerFunction đã hoàn tất việc thực thi. Điều này là nhờ vào cơ chế closure.