【发布时间】:2019-04-04 15:44:21
【问题描述】:
如果我有一个要循环的数组 = [8,7,6,5,4], 为什么下面的 for 循环仍然有效,但数组的长度为 5,并且数组的索引 5 处没有元素?
for(let i=array.length;i>=0;i++){
//do something
}
我知道长度减1会更准确,但是为什么上面的代码仍然有效
【问题讨论】:
-
你必须在每个循环中从
i中减去 1。喜欢i--而不是i++ -
array.forEach(item => /* ...做点什么...*/)
-
这取决于你所说的“工作”。你没有在循环中做任何事情,所以我们不知道什么有效或无效。访问
array[i]仅在您将未定义的值视为有效时才有效。 -
你能给我们看一个带有“工作”代码示例的 sn-p 吗?
-
我知道它会更准确...不,它会正确(相对于不正确)。这不是关于或多或少的“准确”。
i将继续递增并最终返回到负 2 的补码值并终止循环,因为整数具有有限的最大值。您的循环将无缘无故地进行 a lot 花费比需要更长的时间。 “做某事”究竟是做什么的?
标签: javascript arrays for-loop control-flow