На данный вопрос уже ответили:
function t(){
}
let counter = t;
console.log(counter()); //1
console.log(counter()); //2
console.log(counter()); //3
console.log(counter()); //4
console.log(counter()); //5
Задача: Описать финкцию t , что бы при каждом вызове console.log() выводилось соответствующее значение после коментария. Для первого вызова - 1 , для 5ого - 5. Без использования глобальных переменных!! Весь код должен лежать в функции.
Мне кажется, всё дело в области видимости. Но я в этом не уверен и не знаю с чего мне начать. Укажите пожалуйста направление для мыслей! Спасибо
Простой пример замыкания. И да, вместо t, должно быть t() по логике условия.
function t() {
var i = 0;
return function() {
return ++i;
};
}
var counter = t();
console.log(counter()); //1
console.log(counter()); //2
console.log(counter()); //3
console.log(counter()); //4
console.log(counter()); //5
Ну раз уж ответ с тем, что нужно, запостили, запощу и ответ с тем, что НЕ нужно, зато полностью соответствует условию из вопроса:
function t() {
var x = 1;
counter = () => ++x;
return x;
}
let counter = t;
console.log(counter()); //1
console.log(counter()); //2
console.log(counter()); //3
console.log(counter()); //4
console.log(counter()); //5
Справедливости ради, стоит заметить что задачу можно решить и одной функцией.
function t() {
if (typeof t._counter !== 'number') {
t._counter = 0
}
return ++t._counter
}
const counter = t
console.log(counter()) // 1
console.log(counter()) // 2
console.log(counter()) // 3
console.log(counter()) // 4
console.log(counter()) // 5
Варианта с генератором еще нету?
const g = (function* (i){
while(true) yield i++;
})(1);
function t(){
return g.next().value;
}
let counter = t;
console.log(counter()); //1
console.log(counter()); //2
console.log(counter()); //3
console.log(counter()); //4
console.log(counter()); //5
Здравствуйте, изучил основы javascript, html, cssДалее попал в тупик так как что то сложное сделать у меня не получается, а как продолжать обучение...