我见过声称加速函数调用开销的Javascript代码,如:
function foo() {
// do something
}
function myFunc() {
var fastFoo = foo; // this caches function foo locally for faster lookups
for (var i = 0; i < 1000; i++) {
fastFoo();
}
}
我没有看到这可以如何加快javascript函数调用开销,因为在我看来它只是一个内存查找,无论是在当前堆栈的顶部(对于fastFoo)还是在堆栈中的其他位置(我我不确定全局上下文存储在哪里......任何人?)。
这是古代浏览器的遗物,完整的神话还是真正的改进增强剂?
答案 0 :(得分:2)
这完全取决于范围。访问本地作用域总是比访问父作用域更快。如果在父作用域中定义了该函数,则在进行本地引用时通常会看到加速。
如果这个加速很重要取决于很多事情,只有你的情况下的测试才会证明是否值得这样做。
速度的差异取决于范围的差异。
从a.b.c.d.e.f.g.h();
范围内调用x.y.z
比在a.b();
范围内调用a.b.c
要慢(不是最漂亮或最正确的示例,但它应该保留它的目的是:)
答案 1 :(得分:2)
这将导致无限小的性能提升 不要这样做。