- debounce() 这个函数本身是个闭包,为什么 timer 没有被销毁?
- 答:因为这个函数一直被调用!
防抖函数之前
防抖函数之后
import React, { useEffect } from 'react';
export default index =>
{
useEffect(() =>
{
window.addEventListener('resize', debounce(function ()
{
console.log('屏幕调整大小');
}, 1000))
})
function debounce (func, delay)
{
let timer = null;
return function (...args)
{
if (timer) clearTimeout(timer);
timer = setTimeout(() =>
{
func.apply(this, args);
}, delay);
};
}
return (
<div>
</div>
);
};