问题:实现节流函数(throttle)
解析:防抖函数原理:规定在个单位时间内,只能触发次函数。如果这个单位时间内触发多次函数,只有次生效。
//手写简化版
//节流函数
constthrottle=(fn,delay=)=
{letflag=true;
return(...args)=
{if(!flag)
return;flag=
false;
setTimeout(()={
fn.apply(this,args);
flag=true;
},delay);
};
};
适用场景:
拖拽场景:固定时间内只执行次,防止超高频次触发位置变动
缩放场景:监控浏览器resize
动画场景:避免短时间内多次触发动画引起性能问题
问题:实现防抖函数(debounce)
解析:防抖函数原理:在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时。
手写简化版:
//防抖函数
constdebounce=(fn,delay)=
{lettimer=null;
return(...args)=
{clearTimeout(timer);
timer=setTimeout(()={
fn.apply(this,args);
},delay);
};
};
适用场景:
按钮提交场景:防止多次提交按钮,只执行最后提交的次;
服务端验证场景:表单验证需要服务端配合,只执行段连续的输如事件的最后次,还有搜索联想词功能类似生存环境请用lodash.debounce。
以上就是小科今天整理提供的Web前端开发面试题,希望为Web前端同学提供了有用的面试素材,以后小科每日均会提供Python、Web及MySQL数据库相关的习题。学习没有捷径,希望大家都能少走一些弯路,顺利找到工作!