области видимости и замыкание
Реализуйте функцию createCounter (initValue: number), которая работает следующим образом:
let counter = createCounter();
console.log(counter()); // 0
console.log(counter()); // 1
console.log(counter()); // 2
--------------------------------------
let counter = createCounter(13);
console.log(counter()); // 13
console.log(counter()); // 14
console.log(counter()); // 15*/
Как сделать, чтобы считало с нуля - я поняла. А вот с 13 уже проблемы. Что за (initValue: number) двоеточие в параметрах функции мне тоже непонятно.
function makeCounter() {
function counter() {
return counter.count++;
};
counter.count = 0;
return counter;
}
let counter = makeCounter();
console.log(counter());
console.log(counter());
Ответы (2 шт):
Автор решения: entithat
→ Ссылка
Чтобы можно было увеличивать от определенного числа, нам надо передавать собственно это число в функцию.
initValue уже будет у нас сохранена в makeCounter.
makeCounter возвращает функцию, которая увеличивает этот же initValue.
let makeCounter=(initValue=0)=>()=>initValue++;
let c1 = makeCounter();
console.log(c1());
console.log(c1());
console.log(c1());
console.log(c1());
let c2 = makeCounter(13);
console.log(c2());
console.log(c2());
console.log(c2());
console.log(c2());
console.log(c1());
console.log(c2());
Насчет двоеточия. Это способ указания типа значения в Typescript, которое должно передаваться в функцию. В нашем случае только число.
function makeCounter(initValue: number = 0) {
return function(): number {
return initValue++;
}
};
let c1 = makeCounter(2);
console.log(c1());
console.log(c1());
console.log(c1());
Автор решения: Alia Tempora
→ Ссылка
function makeCounter(initValue = 0) {
let count = initValue;
return function () {
return count++;
};
}
let counter = makeCounter();
console.log(counter());
console.log(counter());
console.log(counter());
console.log(counter());