Closures & Scopemedium
Implement debounce(fn, delay)
Write a `debounce` function that delays invoking `fn` until after `delay` ms have elapsed since the last call. Commonly used on search inputs and resize handlers.
Asked at Google, Amazon, TikTok, Uber
Answer
function debounce(fn, delay) { let timer = null return function (...args) { clearTimeout(timer) timer = setTimeout(() => { fn.apply(this, args) }, delay) } } // Usage const search = debounce((query) => fetchResults(query), 300) input.addEventListener('input', (e) => search(e.target.value))
Source: frontendinterviewhandbook.com