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

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是定时器一个数字标识

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

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

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

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

上一篇:kubernetes 新增单namespace权限的用户,拥有独立的 kubeconfig文件


下一篇:手写CSS之可翻页banner的需求实现