更多内容关注微信公众号“前端阿章”~
一、防抖函数和节流函数的区别?
防抖函数记录最后一次执行动作的时间。假设防抖间隔是n秒,则在最后一次执行动作n秒之后可以重新触发事件。
节流函数记录第一次执行动作的时间。假设节流间隔是n秒,则在第一次执行动作n秒之后可以重新触发事件。
二、数组去重的方法?
Set结构。
新建一个空数组,遍历旧数组,若新数组中没有该元素,则追加至新数组中。
filter + indexOf
图片
三、什么是重绘和回流?
重绘是指通过css改变了元素的背景颜色、圆角、透明度等不涉及布局的属性。
回流是指渲染树因元素的尺寸或布局改变而需要重新构建。例如节点的增加与减少、元素大小改变、元素发生位移、获取元素的某些属性(offsetTop、offsetHeight、scrollTop、clientTop...)。
重绘不一定会触发回流,回流一定会触发重绘。
四、call和apply的区别?call和apply都可以改变this指向。
call方法接收多个参数进行调用,apply接收一个数组参数进行调用。
五、前端性能优化方案?减少使用内联样式。
减少http请求数,如使用精灵图、充分利用缓存策略...
减少DOM操作减少回流重绘。
图片懒加载。
使用事件委托,在父节点上绑定事件,利用冒泡原理设置子节点。
减少渲染次数,如vue的keep-alive。
使用防抖、节流函数,避免事件重复提交。
启用gzip压缩。