声明 for 循环变量的最佳实践

declaring for-loop variable best practice

我的问题更像是一个关于 for-loop 风格的好奇问题。 在阅读别人的一些旧代码时,我遇到了一种我以前从未见过的风格。

var declaredEarlier = Array
for(var i=0, length=declaredEarlier.length; i < length; i++) {
    //stuff
}

我从来没有见过在使用前声明长度,因为这是一个旧应用程序,这种风格是 C/C++/旧 Java 结转吗?还是这个开发者是独一无二的? 以这种方式声明长度而不是做我通常做的事情有什么好处吗:

for(var i=0; i < declaredEarlier.length; i++) {
    //stuff
}

如果以前有人问过这个,我找不到了。还有如果Whosebug不适用,问哪个论坛比较好?

有两个原因可以让您像这样抓住长度 up-front:

  1. 万一长度可能改变(记住,JavaScript数组aren't really arrays*并且它们的长度不固定)并且你想用原来的长度限制循环,或者

  2. 避免重复查找对象的长度,因为您知道它不会改变

第一个显然是实质性的;第二个是样式 and/or micro-optimisation.


* 披露:这是我贫血的小博客上的 link 到 post。

对于第一种样式,declaredEarlier 的值可以更改,因此您需要使用它 像这样 length=declaredEarlier.length

但是对于第二种样式你已经知道了你不需要再次计算的值