以下三个方法的作用和使用场景场景?

function a(fun, t){
  let last = 0
  retrun () => {
    let now = +new Date()
    if(now - last > t){
      fun.apply(this, arguments)
      last = now
    }
  }
}

function b(fun, lay) {
  let t = null 
  return () => {
    clearTimeout(t)
    t = setTimeout(() => {
      fun.apply(this, arguments)
    }, lay)
  }
}

var c =
  (fn, ...a) => 
    (...b) => 
      fn(...a, ...b)

对于前两个方法,主要作用就是改变this的指向,但是使用场景有什么不一样吗?想不到应该在怎样的场景下使用;对于第三个方法,我的的理解它的使用方法就是:c(fn, {a:a})({b:b}),但是也想不出来有怎样的使用场景

阅读 1.6k
2 个回答

a => 节流
b => 去抖
c => 柯里化

  1. t时间后才能调用fun
  2. 调用后,延时lay时间执行fun,在lay时间内,若再次调用,取消上次的
  3. fn的参数分两次传递
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题