Это происходит из-за вашего find
состояния.Давайте вернемся назад и рассмотрим этот фрагмент кода:
if (
(function(){ return 1 }) === (function(){ return 1 })
) {
console.log('The functions are equal');
} else {
console.log('The functions are NOT equal');
}
// logs 'The functions are NOT equal'
Несмотря на то, что я написал две идентичные анонимные функции, они не строго равны друг другу.Когда вы передаете эту анонимную функцию, это, по сути, то, что вы делаете.Таким образом, при поиске в вашем массиве ранее найденной функции он никогда не найдет совпадения, потому что каждый раз, когда debounce(() => { foo(5); }, 1000);
вызывается, создает новую функцию .Поскольку совпадение никогда не будет найдено, оно никогда не будет отменено.