Давайте поговорим о замыканиях в 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
- Веб-сайт → Скоро будет!