Skip to content

Latest commit

 

History

History
45 lines (31 loc) · 1.59 KB

before.md

File metadata and controls

45 lines (31 loc) · 1.59 KB

lodash源码分析之before

本文为读 lodash 源码的第一百七十二篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash

gitbook也会同步仓库的更新,gitbook地址:pocket-lodash

源码分析

before 会创建一个调用 func 的函数,functhis 会绑定到这个函数的 thisfunc 的调用次数不会超过 n 次,如果超过,则会返回最后一次的结果。

源码如下:

function before(n, func) {
  let result
  if (typeof func !== 'function') {
    throw new TypeError('Expected a function')
  }
  return function(...args) {
    if (--n > 0) {
      result = func.apply(this, args)
    }
    if (n <= 1) {
      func = undefined
    }
    return result
  }
}

首先对 func 进行检测,如果不是 function ,则报 TypeError

result 来保存每次调用的结果。

可以看到,返回的函数每次调用的时候,n 都会递减,在 n 大于 0 时,都会调用 func,并且更新结果 result ,并且将 result 返回。

n <= 1 时,会将 func 设置为 undefined, 释放内存。

License

署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)

最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见:

作者:对角另一面