JavaScript leaking arguments

在看 Vue 源码时,遇到这么一段代码:

// avoid leaking arguments:
// http://jsperf.com/closure-with-arguments
let i = arguments.length
const args = new Array(i)
while (i--) {
    args[i] = arguments[i]
}
const result = original.apply(this, args)

于是研究了一番。

Leaking arguments 是什么

Leaking arguments 是指传递 arguments 作为另一个函数的参数。

影响

这会导致性能问题,V8 引擎会跳过对 leaking arguments 的优化。

解决方案

arguments 中需要的参数取出来,赋值给新的数组,并将该数组作为另一个函数的参数。也就是上面 Vue 源码中的方案。

相关文章

最后更新时间: 3/25/2019, 4:08:34 PM