函数防抖
当持续触发事件,一定时间段内,没有再触发事件,事件处理函数才会执行一次,如果设定的时间到来之前,又一次触发了事件,就重新开始延时
封装页面字体大小的样式等于可视宽度的半分之一
function gethtml() {
document.documentElement.style.fontSize = document.documentElement.clientWidth / 10+'px';
}
gethtml();
声明一个定时器等于空
var timer = null;
进行resize事件(resize当窗口或框架发生改变时在window或框架上触发)
进行判断
window.addEventListener('resize', function () {
if(timer){
clearInterval(timer);
timer=null;
}
timer=setTimeout(function(){
gethtml();
},300)
})
函数节流
当持续触发事件时,保证一段时间段内只调用一次事件处理函数
间隔一段时间执行一次回调的场景有:
滚动加载,加载更多或滚到底部监听
谷歌搜索框,搜索联想功能
高频点击提交,表单重复提交
俩个的区别:
函数防抖,在一段连续操作结束后,处理回调,利用 clearTimeout 和 setTimeout 实现。函数节流,在一段连续操作中,每一段时间只执行一次,频率较高的事件中使用来提高性能。
函数防抖关注一定时间连续触发,只在最后执行一次,而函数节流侧重于一段时间内只执行一次。