面试题答案
一键面试- 防抖(Debounce)
- 原理:设置一个延迟时间,当点击事件触发后,延迟一定时间再执行事件处理函数。若在这个延迟时间内再次触发点击事件,则清除之前的定时器,重新开始计时。这样可以避免在短时间内频繁触发事件处理函数,减少不必要的计算和渲染。例如,在搜索框输入时,使用防抖可以避免每次输入都发起搜索请求,而是在用户停止输入一段时间后再发起请求。
- 节流(Throttle)
- 原理:规定在一个单位时间内,只能触发一次事件处理函数。当点击事件频繁触发时,会按照设定的时间间隔来执行事件处理函数,而不是每次点击都执行。比如滚动条滚动事件,使用节流可以确保在滚动过程中,事件处理函数按照固定频率执行,防止性能损耗。
- 事件委托(Event Delegation)
- 原理:将事件处理函数绑定到父元素上,而不是每个列表项都绑定。当列表项点击时,事件会冒泡到父元素,通过判断事件源(
event.target
)来确定具体点击的是哪个列表项。这样可以减少事件绑定的数量,提高性能,尤其适用于列表项数量较多的情况。
- 原理:将事件处理函数绑定到父元素上,而不是每个列表项都绑定。当列表项点击时,事件会冒泡到父元素,通过判断事件源(