Если мы имеем эту основную функцию (и ее закрытие):Почему новые вызовы этой функции создают новые цепочки областей и новые частные переменные?
function counter(){
var n = 0;
return {
count: function() {return n++},
reset: function() {n = 0}
};
}
Является это, что происходит в памяти? (в основном указатель на функциональный объект и его цепочку) function diagram http://www.geraldleroy.com/function-diagram.jpg
Правильно ли приведенная выше диаграмма? Если это так, я не понимаю, почему эти две строки кода создают две новые цепочки областей и новые частные переменные:
var c = counter();
var d = counter();
Похоже, как с и d будет ссылаться на оригинальных объект функции и будет использовать свою цепочки области.
Я немного смущен и был бы признателен за любое понимание этого, которое может предложить любой.
Спасибо!
Термин, который вы ищете, является «закрытием». – elclanrs
Быстрый вопрос: вы понимаете, как вызовы функций работают на других, нефункциональных языках? C например? Как вы знаете, что такое стек вызовов (или запись активации)? – slebetman
Эй, там. Спасибо, что ответили. Да, я знаком со стеками вызовов, которые используются в архитектуре языка C. Наверное, у меня есть небольшая проблема с пониманием эквивалентной архитектуры в JavaScript (хотя я знаю, что JavaScript не основан на стеке). – Gerald