function - стрелочные функции js - Как работают JavaScript-закрытия?

методы функции js / javascript / variables / scope / closures

Как бы вы объяснили замыкание JavaScript человеку,который знает,из каких понятий он состоит (например,функции,переменные и т.п.),но не понимает,из каких понятий он состоит,но не понимает самих замыканий?

28 revs, 21 users 17%



Answer #1

Закрытия часто используются для создания функций со скрытыми приватными данными (но это не всегда так).

var db = (function() {
    // Создаем скрытый объект, в котором будут храниться данные
    // недоступно извне.
    var data = {};

    // Создаем функцию, которая предоставит некоторый доступ к данным.
    return function(key, val) {
        if (val === undefined) { return data[key] } // Получать
        else { return data[key] = val } // Набор
    }
    // Мы вызываем анонимную функцию окружения,
    // возвращаем указанную выше внутреннюю функцию, которая является закрытием.
})();

db('x')    // -> undefined
db('x', 1) // Устанавливаем x равным 1
db('x')    // -> 1
// Невозможно получить доступ к самому объекту данных.
// Мы можем получить или установить индивидуальное значение.