主要是从防抖节流方面来具体说明JS部分的优化问题
适用场景
- 滚动事件
- 输入的模糊匹配
- 轮播图的切换
- 点击操作
简单概述
浏览器默认情况下都有自己的监听事件间隔(4~6ms),如果检测到多次事件的监听执行,那么就会造成资源浪费
前置场景:界面上有一个按钮,我们连续多次点击
防抖:
对于高频的操作来说,我们只希望识别一次点击,可以人为认为是第一次或者最后一次
<button id="btn">点击一下</button>
<script>
//获取元素
var btn = document.getElementById('btn')
/*
handle 来确定最终的时间形成
wait 来表示事件执行所需要延迟的时间
immediate 控制执行是第一次还是最后一次(false)
*/
function mydebounce(handel,wait,immediate) {
if (typeof handel !== 'function') throw new Error('handel must be a function')
if (typeof wait === 'undefined') wait = 300
if (typeof wait === 'boolean') {