Задать вопрос
Nikulio
@Nikulio
NaN !== NaN

Почему в данном примере результат замыкания 5, а не 6?

Всем привет!
Вот пример :

function makeCounter() {
	var currentCount = 1;
	
	function counter() {
		return currentCount++;
	}
	
	counter.set = function(value) {
		currentCount = value;
	};
	
	counter.reset = function() {
		currentCount = 1;
	};
	
	return counter;
}

var counter = makeCounter();

counter.set(5);

console.log(`counter --- `, counter()); // почему тут 5, а не 6?


Почему при выводе получим 5, а не 6?
  • Вопрос задан
  • 293 просмотра
Подписаться 3 Простой Комментировать
Решения вопроса 2
polarlord
@polarlord
А почему должно быть 6 ? Поменяйте в counter() на return ++currentCount; и будет вам 6.
Про разницу между формами инкремента читайте тут https://learn.javascript.ru/operators#inkrement-de...
Ответ написан
Комментировать
search
@search
мама говорит что я особенный
Если хотите чтоб функция counter() увеличила currentCount перед выводом, то можно делать

return ++currentCount

Хозяйке на заметку: оператор ++ считается антипаттерном и на уважающих себя проектах отключён на уровне линтера.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы