@YakovSpb

Где в замыкание хранится переменная?

Где тут хранится переменная счетчика? При каждом запуске ведь переменной count должен присваиваться ноль.

function Counter(){
	let count = 0;

	return function(){
		count++;
		return count;
	}
}

const counter = Counter();
const counter2 = Counter();

console.log(counter());
console.log(counter());
console.log(counter2());
console.log(counter2());
  • Вопрос задан
  • 81 просмотр
Пригласить эксперта
Ответы на вопрос 2
john36allTa
@john36allTa
That`s calling Walker
const counter = Counter();
//тут counter будет равен 
function(){
    count++;
    return count;
  }
// переменная count будет доступна из этой функции, 
// но она не равна переменной из const counter2 = Counter()
// у counter и couner2 разные области видимости (контекст)
// т.к. у каждой из них свой стек вызовов

Про механизм работы хорошо расписано на хабре
https://habr.com/ru/company/ruvds/blog/424967/
Ответ написан
@Steppp
function Counter(){
  let count = 0;
  console.log(count); // тут хранится
  return function(){
    count++;
    return count;
  }
}
Counter();

А если капнуть глубже, то в оперативке все)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы