JavaScript:缓存嵌套变量的速度更快吗?

alt*_*alt 7 javascript performance

假设我有一个变量嵌套在一个巨大的对象中,我经常重复使用它:

i = 10000000;
while (i) {
    i--;
    document.write( bigobject.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p );
}
Run Code Online (Sandbox Code Playgroud)

将它缓存在循环外的新变量中会更快吗?

v = bigobject.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p
Run Code Online (Sandbox Code Playgroud)

并在我的循环中使用该缓存变量?

document.write ( v );
Run Code Online (Sandbox Code Playgroud)

对于不太直观的方面:JavaScript变量是自动缓存还是浏览器每次请求时都必须搜索更大的变量?

jfr*_*d00 8

与所有重要性能问题一样,最好在jsperf.com这样的工具中测试您的具体情况,这样您就可以测量您关心的确切情况,并且您还应该在多个浏览器中运行测试以确保您的'重新测量是语言实现的一般特征,而不仅仅是一个浏览器的特性.

在回答您的问题时,如果您要多次访问它,通常会更快地缓存深层对象引用.

In the specific example, I coded here: http://jsperf.com/cache-deep-reference, the cached reference was more than 2x faster in chrome and more than 4x faster in IE10.