Обращение к функции через переменную
Почему к функии заданной в указанном виде, нельзя обращаться напрямую, а только через переменную?
function createCounter() {
var count = 0;
return function() {
return count++;
};
}
var counter1 = createCounter();
console.log(counter1());
console.log(createCounter()); // ошибка..
Ответы (2 шт):
Автор решения: u111
→ Ссылка
Потому что сама функция - это createCounter
. А createCounter()
- это то, что эта функция возвратила, то есть другая функция. И ошибки никакой не возникает.
Автор решения: CrazyElf
→ Ссылка
Вы просто не вызвали полученную из функции функцию.
function createCounter() {
var count = 0;
return function() {
return count++;
};
}
var counter1 = createCounter();
console.log(counter1());
console.log(createCounter()()); // <- добавились ещё одни скобки!
Сначала createCounter()
создаёт и возвращает функцию, а потом её нужно вызвать, отсюда ещё одни скобки.