前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JS高级测试: 下列函数节流说法不正确的是?

JS高级测试: 下列函数节流说法不正确的是?

作者头像
舒克
发布2019-09-08 16:21:05
1.1K0
发布2019-09-08 16:21:05
举报

考核内容:JAVASCRIPT定时器与事件 的使用

题发散度: ★★★

试题难度: ★★★

解题思路:

为什么要函数节流 由于事件频繁被触发,因而频繁执行DOM操作、资源加载等重行为,导致UI停顿甚至浏览器崩溃。 比如以下情况: 1. window对象的resize、scroll事件 2. 拖拽时的mousemove事件 3. 射击游戏中的mousedown、keydown事件 4. 文字输入、自动完成的keyup事件 再详细点: 我们定义了一个鼠标滚动事件 : 我们的本意只是让鼠标滚动一次执行一次滚动函数,但是window的onscroll函数并不是等scroll结束之后才会调用,鼠标滚动或拖动滚动条,就会不停的触发scroll事件,如果处理的东西多,低版本的浏览器也会陷入假死状态。 解决办法: 函数节流 节流就像将水龙头拧紧直到水是以水滴的形式流出,那你会发现每隔一段时间,就会有一滴水流出。也就是会说预先设定一个执行周期,当调用动作的时刻大于等于执行周期则执行该动作,然后进入下一个新周期 列举代码如下:

代码语言:javascript
复制
function throttle(method, delay, time) {var timeout,startTime = new Date();return function() {var context = this,args = arguments,curTime = new Date();clearTimeout(timeout);    // 如果达到了规定的触发时间间隔,触发 handlerif (curTime - startTime >= time) {method.apply(context, args);startTime = curTime;    // 没达到触发间隔,重新设定定时器} else {timeout = setTimeout(method, delay);}};

函数中,当一次时间较长的时候还是会执行两次,而不是等滚动停止之后再执行。达到了想要的效果,既没有频繁的执行也没有最后执行;

常用的应用场景:图片懒加载

参考以上的解析:

ABC都正确

答案:不正确的是

代码语言:javascript
复制
  D. js函数节流会阻断函数的运行,从而降低js运行效率
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 迈向前端工程师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档