Цель: создать функцию
makeCounter(initialValue = 0)
, которая возвращает функцию‑счётчик. Первый вызов возвращает начальное значение (или0
), каждый последующий — на1
больше. Каждый счётчик независим.
++
увеличивает значение на 1function makeCounter(initialValue = 0)
count++
(возвращает текущее значение, затем увеличивает) и ++count
(увеличивает, затем возвращает)function makeCounter(initialValue = 0) {
// Закрытая переменная состояния — доступна только из возвращаемой функции
let count = initialValue;
// Возвращаем функция‑счётчик: отдаёт текущее значение, затем увеличивает его
return function() {
return count++; // пост‑инкремент: сначала вернуть старое значение, потом увеличить
};
}
window.makeCounter = makeCounter;
Почему именно так:
count
между вызовами. Это даёт независимое состояние для каждого нового счётчика.count++
, а не ++count
, чтобы первый вызов вернул начальное значение без увеличения. Это требование заложено в тестах.initialValue = 0
по умолчанию упрощает код — можно не проверять, передан ли параметр.makeCounter(...)
создаёт новое лексическое окружение, поэтому counter1
и counter2
не мешают друг другу.Создайте функцию makeCounter
, которая принимает необязательное целое число в качестве начального значения и возвращает функцию-счетчик.
makeCounter
создают отдельные счетчикиconst counter = makeCounter();
counter(); // 0
counter(); // 1
counter(); // 2
const counter = makeCounter(5);
counter(); // 5
counter(); // 6
counter(); // 7
const counter1 = makeCounter(10);
const counter2 = makeCounter(20);
counter1(); // 10
counter2(); // 20
counter1(); // 11
counter2(); // 21
makeCounter
Цель: создать функцию
makeCounter(initialValue = 0)
, которая возвращает функцию‑счётчик. Первый вызов возвращает начальное значение (или0
), каждый последующий — на1
больше. Каждый счётчик независим.
++
увеличивает значение на 1function makeCounter(initialValue = 0)
count++
(возвращает текущее значение, затем увеличивает) и ++count
(увеличивает, затем возвращает)function makeCounter(initialValue = 0) {
// Закрытая переменная состояния — доступна только из возвращаемой функции
let count = initialValue;
// Возвращаем функция‑счётчик: отдаёт текущее значение, затем увеличивает его
return function() {
return count++; // пост‑инкремент: сначала вернуть старое значение, потом увеличить
};
}
window.makeCounter = makeCounter;
Почему именно так:
count
между вызовами. Это даёт независимое состояние для каждого нового счётчика.count++
, а не ++count
, чтобы первый вызов вернул начальное значение без увеличения. Это требование заложено в тестах.initialValue = 0
по умолчанию упрощает код — можно не проверять, передан ли параметр.makeCounter(...)
создаёт новое лексическое окружение, поэтому counter1
и counter2
не мешают друг другу.Создайте функцию makeCounter
, которая принимает необязательное целое число в качестве начального значения и возвращает функцию-счетчик.
makeCounter
создают отдельные счетчикиconst counter = makeCounter();
counter(); // 0
counter(); // 1
counter(); // 2
const counter = makeCounter(5);
counter(); // 5
counter(); // 6
counter(); // 7
const counter1 = makeCounter(10);
const counter2 = makeCounter(20);
counter1(); // 10
counter2(); // 20
counter1(); // 11
counter2(); // 21
makeCounter
Редактор кода намеренно скрыт на мобильном.
Поверь, так лучше: я оберегаю тебя от искушения писать код в неидеальных условиях. Маленький экран и виртуальная клавиатура — не лучшие помощники для программиста.
📖 Сейчас: Изучи задачу, продумай решение. Действуй как стратег.
💻 Потом: Сядь за компьютер, открой сайт и реализуй все идеи с комфортом. Действуй как код-джедай!