JavaScript获取数组大小效率

JavaScript获取数组大小效率,javascript,c++,Javascript,C++,我从学校里读到以下内容 错误代码: 对于(i=0;i

我从学校里读到以下内容

错误代码:
对于(i=0;i
我在学校里教过C++和java,我从来没有听说过这是我们需要考虑的一个问题。难道数组的大小不是O(1)运算吗?这个优化真的是必要的吗?这是不是真的,人们在工业上做什么?< /P> 编辑:


假设阵列的大小不会改变。

是的,得到的长度是O(1),但通常不会进行优化,因为在循环过程中阵列长度可以改变

如果我知道数组长度不会改变,我的首选语法是:

for (var i = 0, n = arr.length; i < n; ++i) 
for(变量i=0,n=arr.length;i

像往常一样,w3schools忽略了这一点——他们引用的第一个版本并不总是糟糕的代码,因为如果在循环过程中修改了数组长度,那么该代码可能正是所需的。

是的,获取的长度是O(1),但通常不会进行优化,因为在循环过程中更改数组长度是可行的

如果我知道数组长度不会改变,我的首选语法是:

for (var i = 0, n = arr.length; i < n; ++i) 
for(变量i=0,n=arr.length;i

像往常一样,w3schools忽略了这一点——他们引用的第一个版本并不总是糟糕的代码,因为如果在循环过程中修改数组长度,那么该代码可能正是需要的。

在过去,这很重要,在当前的JS引擎中,这没有什么区别。这是一个微优化——首先是,
arr.length
mu每次通过循环时都会重新计算st。对于小循环,它是完全不可见的。@0x499602D2请详细说明-如果在JS中比在其他系统中更有用的话languages@Alnitak在你提到阵列长度可以改变之后,我就同意了。在过去,它很重要,在当前的JS引擎中,它没有什么区别。它是一个麦克风ro优化——首先,每次通过循环时都必须重新计算
arr.length
。对于小循环,这是完全不可见的。@0x499602D2请详细说明-如果在JS中比在其他循环中更有用的话languages@Alnitak在你提到数组长度可以改变之后,我就同意了。这也更好习惯以这种方式编写循环。并非所有的停止条件都将是微不足道的计算。因此,即使我知道数组的大小不会改变,我也不应该每次调用arr.length?@arch1ect它可能会对性能产生一点影响,但如果不必,为什么要为循环的每一次计算一个循环不变量呢ree它的速度稍微快一点,我只是觉得这是一个小小的改进,我不需要改变我以前为循环编写的方式。所以不要-但无论如何,将任何循环不变量移出循环总是更好的。以这种方式编写循环也是更好的习惯。并非所有的停止条件对计算来说都是微不足道的很晚了。所以即使我知道数组的大小不会改变,我也不应该每次都调用arr.length?@Arch1tect它可能会对性能产生一点影响,但是如果不需要的话,为什么要为循环的每一次都计算循环不变量呢?我同意它稍微快一点,我只是觉得这是一个微小的改进,我不需要改变我以前写循环的方式…所以不要-但无论如何,最好将任何循环不变量移出循环。