Javascript 我应该将数组的长度分配给for循环中的另一个变量吗?

Javascript 我应该将数组的长度分配给for循环中的另一个变量吗?,javascript,Javascript,我正在学习Javascript,这里的for循环看起来与C中的完全相同。我想知道的是是否应该将字符串的长度指定给循环中的另一个变量。我通常在C中对字符数组进行循环时这样做,这样循环就不必在每次迭代时调用strlen: for (int i = 0, n = strlen(word); i < n; i++) { // code block } for(inti=0,n=strlen(word);i

我正在学习Javascript,这里的for循环看起来与C中的完全相同。我想知道的是是否应该将字符串的长度指定给循环中的另一个变量。我通常在C中对字符数组进行循环时这样做,这样循环就不必在每次迭代时调用
strlen

for (int i = 0, n = strlen(word); i < n; i++)
{
    // code block
}
for(inti=0,n=strlen(word);i
我从以下教程中看到,Javascript中的for循环只是在不指定变量数组长度的情况下编写的:

for (let i = 0; i < arr.length; i++) {
    // code block
}
for(设i=0;i

在Javascript中将数组的长度指定给变量有什么好处吗?

没有好处,不像在C中那么重要,因为
arr.length
是一个静态属性,即它不是计算出来的,不像
strlen
每次调用时都会计算长度


编辑:,这是一个有争议的问题,但直接访问该属性似乎是最快的

谢谢。我将回顾我的代码并对其进行更改。虽然它不是您所说的访问器属性,但从变量访问
length
与从属性访问
之间存在可测量的时间差,如果您在循环中修改数组,您还可能陷入无限循环。由于这些原因,确实有好处。这就是为什么有明确的步骤将长度存储在临时变量中的原因。@PatrickRoberts您有任何关于可测量时差的参考资料吗?我想看看我几年前做过基准测试,发现它确实提高了迭代速度。事实证明,正如您所指出的,v8现在似乎已经缩小了速度差距,因为这是一种常见的模式,不过如果您计划在迭代数组时修改数组,我仍然更愿意将其缓存在变量中。