首页 > Web开发 > 详细

js 手撕代码高频面试题以及应用场景整理

时间:2021-08-19 08:50:54      阅读:16      评论:0      收藏:0      [点我收藏+]

js 手撕代码高频面试题

1、debounce(防抖)

触发高频时间后n秒内函数只会执行一次,如果n秒内高频时间再次触发,则重新计算时间。

const debounce = (fn, time) => {
  let timeout = null;
  console.log(‘我来了‘) // 我来了
  return function() {
    // console.log(‘--aa--‘, timeout)
    clearTimeout(timeout)  // timeout是定时器一个数字标识
    // console.log(timeout,‘--bb--‘, clearTimeout(timeout))
    timeout = setTimeout(() => {
      // console.log(‘过了3秒我才执行哦,中间有操作会被清0,重新被计时‘)
      fn.apply(this, arguments);
    }, time);
    // console.log(‘--cc--‘, timeout)
  }
};

使用

function A(){
  console.log(‘每隔3秒执行一次的函数中间有操作会被清0,重新被计时---test‘, new Date())
  // console.log(‘test‘)
}
var testDebounce = debounce(A, 3000)

// window.onresize = function(){
//   testDebounce()
// }
window.onresize = testDebounce 

 

timeout是定时器一个数字标识

技术分享图片

每隔三秒执行一次,中间有操作会请0重新计时,也就是设定的时间就是执行最短时间

技术分享图片

js 手撕代码高频面试题以及应用场景整理

原文:https://www.cnblogs.com/pikachuworld/p/15159243.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!