假设我们有一个类似的对象:
var foo = { a: { b: { c: { d: { e: { f: [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ] } } } } } };
我们希望在函数中使用对象的各个部分,如下所示:
function doStuff() {
if ( foo.a.b.c.d.e.f[ 5 ] >= some_important_filter_value ) {
alert( "Some important filter value is " + foo.a.b.c.d.e.f[ 5 ] +
"!!\nRun for your lives!!" );
}
}
为了论证的缘故,其中包含的值foo
在函数执行过程中不会发生变化,或者就此而言,根本不会发生变化。
Is it better从对象中读取值并将它们存储为临时变量/常量,或者完全可以使用对象的完整路径foo
作为价值的参考?
i.e. Is
function doStuff() {
var mem = foo.a.b.c.d.e.f[ 5 ];
if ( mem >= some_important_filter_value ) {
alert( "Some important filter value is " + mem +
"!!\nRun for your lives!!" );
}
}
"better",如果是这样,具体以什么方式?
我自己有限的测试在 Google Chrome 的 JS 控制台中显示100000
while 循环深度查询对象,而查询临时变量的相同数量的循环则以大致相同的速度运行。
有效地复制和存储值foo
放入临时变量中以供多次使用,在某些情况下可能具有实用价值,可以减少代码/文件大小并提高可读性may be改进了,但是为了这个问题的目的,抛开这一点,还有什么其他支持它的论据呢?
对于现代 JS 解释器来说,临时 var 的创建和处理肯定比直接引用对象中的值更简单?
为什么以及如何会var temp = foo.a.b.c...
be better而不是跳过定义并仅通过我们已有的引用使用该值?
我想从根本上来说,我要问的是——我的参考中有多少个点真的很重要,因为从长远来看,它只是一个参考——或者是吗?