Проверяет понимание замыканий и декораторов в JavaScript для управления состоянием функции.
Декоратор — это функция высшего порядка, которая принимает исходную функцию и возвращает новую, расширяющую её поведение. В данном случае мы хотим ограничить количество вызовов, чтобы функция выполнялась только заданное число раз, а затем игнорировала последующие вызовы или возвращала ошибку.
Используется замыкание: внутри декоратора создаётся переменная-счётчик, которая сохраняется в замыкании возвращаемой функции. При каждом вызове счётчик увеличивается, и если он превышает лимит, вызов блокируется.
function limitCalls(fn, maxCalls) {
let calls = 0;
return function(...args) {
if (calls >= maxCalls) {
console.log('Лимит вызовов исчерпан');
return;
}
calls++;
return fn.apply(this, args);
};
}
const sayHello = () => console.log('Hello!');
const limitedHello = limitCalls(sayHello, 2);
limitedHello(); // Hello!
limitedHello(); // Hello!
limitedHello(); // Лимит вызовов исчерпанВывод: Декоратор с ограничением вызовов полезен для контроля выполнения функций в сценариях, где важно избежать избыточных или повторных операций, например, при работе с внешними сервисами или ресурсоёмкими вычислениями.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию