Давайте поговорим о замыканиях в JavaScript. Давайте возьмем приведенный ниже фрагмент кода в качестве примера.

myName = 'John'
function printName() {
    console.log(myName);
}
printName();

Фрагмент кода выше имеет глобальную переменную myName; функция, которая выводит myName на консоль и выполняет функцию. Этот фрагмент кода выведет myName на консоль, потому что это гигантское замыкание.

В большинстве языков программирования вы не можете получить доступ к переменным, находящимся вне этой функции, изнутри этой функции; однако это возможно в JavaScript, и это то, что мы называем замыканием.

"Что такое JavaScript Closure?" Я спросил Google, и Google ответил мне через 0,60 секунды:

Давайте перейдем к другому примеру. Фрагмент кода ниже является наиболее часто используемым примером, когда большинство людей говорят о замыканиях.

function outerFunction(outerVariable){
    return function innerFunction(innerVariable) {
        console.log('Outer Variable: ' + outerVariable);
        console.log('Inner Variable: ' + innerVariable);
    }
}
var newFunction = outerFunction('outside');
newFunction('inside');

В приведенном выше фрагменте кода есть функция с именем outerFunction(), которая принимает outerVariable в качестве параметра, и эта функция возвращает функцию innerFunction(), которая принимает innerVariable в качестве параметра и выводит эти переменные на консоль. Затем мы вызываем outerFunction() и присваиваем ее переменной newFunction и вызываем newFunction(), передавая параметр inside.

Консольный результат:

Outer Variable : outside
Inner Variable : inside

Причина, по которой мы можем получить доступ к outerVarible внутри этой функции, заключается в замыканиях. Что происходит, так это то, что эта innerFunction думает:

«хорошо, я внутри этой внешней функции, и у нее есть внешняя переменная. Я собираюсь сохранить эту outerVariable ия всегда буду следить за тем, что представляет собой эта outerVariable; даже если функция, определяющая эту переменную, больше не выполняется; Я по-прежнему буду следить за outerVariable».

Вот почему вы можете видеть, что эти две переменные выводятся на консоль.

Надеюсь, вы найдете этот пост полезным. Для получения дополнительной информации о замыканиях в JavaScript прочтите эту статью Замыкания — это не волшебство на StackOverflow!

Подпишитесь на меня
- Instagram → #shafkhanblogs
- GitHub
- Веб-сайт → Скоро будет!