Закрытие в JavaScript является одним из многих вопросов, обычно задаваемых в интервью JavaScript.
Что такое закрытие?
Всякий раз, когда создается функция, она образует закрытие с прицелом внешних функций. Думайте об этом закрытии как о пакете Все переменные объема внешней функции.
Давайте поймем это с примером.
function createAdder(firstNum) {
return function (secondNum) { //The closure function
return firstNum + secondNum;
};
}
let addOne = createAdder(1);
console.log(addOne(10)); // 11
console.log(addOne(2)); // 3
Давайте поймем, что происходит в приведенном выше коде.
Сначала мы определяем функцию Createadder, которая принимает FirstNum как параметр.
Затем мы возвращаем анонимную функцию, которая принимает Secondnum как параметр.
Теперь мы объявляем добавление переменная, с вызовом функции CreateDder, с FirstNum Значение параметра составляет 1.
// so now the value of addOne should be -
addOne = function (secondNum) { //The closure function
return firstNum + secondNum;
};
Итак, когда мы звоним добавление (10) . Как это добавление Получите значение FirstNum ? Это из -за закрытие .
Таким образом, когда создается анонимная функция (возвращаемая функция). Он ищет родительские переменные. Он находит FirstNum переменная со значением 1 и образует закрытие с ним (сохраняет переменную), чтобы она могла получить доступ к переменной FirstNum позже.
Таким образом, функция добавления (10) возвращает 11. Потому что у него уже есть FirstNum Значение как 1.
Теперь, я думаю, вы понимаете закрытие, давайте посмотрим на практическое пример того, где мы можем использовать закрытие.
В приведенном выше примере UpdateClickCount Переменная присваивается iife (немедленно вызванное выражение функции). Итак, IIFE вызывает себя и возвращает анонимную функцию, которая, наконец, назначена UpdateClickCount .
Теперь эта анонимная функция образует закрытие с родительской функцией, так что она имеет доступ к переменным родительской функции, т. Е. счетчик и P Анкет
Когда мы нажимаем, он вызывает UpdateClickCount Что ссылается на анонимную функцию, увеличивает счетчик и обновляет текстовый контент P Анкет
Ну, это с моей стороны. До скорого 😁
Оригинал: “https://dev.to/abhishekjain35/closures-in-javascript-2338”