Как работает концепция замыканий в JavaScript?

Помогите выяснить, что такое замыкания в JavaScript

Я знаком с основами JavaScript, такими как функции и переменные, но замыкания вызывают у меня затруднения. Не могли бы вы объяснить их простым языком? Я пробовал читать разные статьи, но они слишком сложные для меня. Пожалуйста, приведите понятные примеры, чтобы я мог лучше разобраться.

Вот код, который вызывает у меня вопросы:

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

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

Почему значение переменной count остается доступным после вызова функции createCounter? Как функция increment имеет доступ к переменной count?