Я пытаюсь понять закрытие в javascripts. Закрытие - это локальные переменные для функции, которые сохраняются в живых после возвращения функции [reference].Закрытие Javascript - родительская функция
Во многих ссылках я видел, что они рассматривают родительскую функцию при описании замыкания функции. Но в соответствии с приведенным ниже примером я думаю, что функция может получить доступ не только к переменным в родительской функции, но также и к родительскому и выше.
Может кто-нибудь объяснить, правильно ли я думаю? Спасибо заранее ..
test1 = function() {
var x = 10;
return function(){
alert(++x);
};
}
test2 = function() {
var x = 10;
return function(){
return function(){
alert(++x);
}
};
}
t1 = test1();
t1(); //11
t1(); //12
t2 = test2()();
t2(); //11
t2(); //12
Я думаю, что вам не хватает кода вверху для 'test1' –
Если родительская функция может получить доступ к переменной, то так же может быть и ребенок. Он не зависит от переменной *, явно выраженной * в родительском * немедленном *. –
Единственное, что имеет значение здесь, это область действия переменной (где была определена переменная). Вы можете получить доступ так высоко, как определена переменная. –