Почему не работает?
День добрый. Подскажите, почему данный код не работает?
function makeCounter() {
var currentCount = 1;
(function() {
currentCount++;
})();
return currentCount;
}
var counter = makeCounter();
alert (typeof counter);
alert( counter() );// выводит 2
alert( counter() );// выводит 2
Значение в currentCount не запоминается, почему? |
Rora,
function makeCounter() {
var currentCount = 1;
return function() {
return currentCount++;
};
}
var counter = makeCounter();
alert (typeof counter);
alert( counter() );// выводит 1
alert( counter() );// выводит 2
alert( counter() );// выводит 3
|
я знаю что так сработает, вопрос, почему не работает та как я написал..?
|
Rora,
вы написали
function makeCounter() {
return 2
}
|
Эм, я пытаюсь разобраться с замыканиями. И тот шедевр с которого начался пост, был эксперимент на тему... Работать данное изваяние должно было так -же как код который предложили вы, но не сложилось, и я не понимаю почему. Инкремент работает. Но, такое впечатление, что я постоянно создаю новый counter. Или поскольку я возвращаю число так и есть?
|
Rora,
потому что нет никакого замыкания, ваша функция в посте№1 и в посте №4 одинаковы. |
рони,
Я уже начал об этом догадываться. Спасибо. Перечитаю перечитанное еще раз. |
Цитата:
А неправильные ожидания имхо от того что ты учишься по неправильной книжке где плохо объясняют когда и для каких функций создаются замыкания а когда не создаются. Неплохое объяснение https://www.youtube.com/watch?v=rpIxGwFz0Xs |
| Часовой пояс GMT +3, время: 07:14. |