我从w3schools here
中读到以下内容Bad Code:
for (i = 0; i < arr.length; i++) {
Better Code:
l = arr.length;
for (i = 0; i < l; i++) {
我在学校学过C ++和Java,但我从未意识到这是我们需要考虑的效率问题。是不是只获得了O(1)操作的数组大小?这种优化是否真的有必要,它真的是人们在工业界做的事情吗?
编辑:
鉴于数组的大小不会发生变化。
答案 0 :(得分:4)
是的,得到的长度是O(1),但它不是通常优化的,因为在循环期间阵列长度可以改变。
如果我知道数组长度不会改变,我的首选语法是:
for (var i = 0, n = arr.length; i < n; ++i)
像往常一样,w3schools忽略了这一点 - 他们引用的第一个版本并不是总是错误的代码,因为如果修改了数组长度,那么代码可能正是如此在循环中。