Javascript 在循环中传递iterable[i]而不是iterable.length可以吗

Javascript 在循环中传递iterable[i]而不是iterable.length可以吗,javascript,loops,for-loop,Javascript,Loops,For Loop,是否应该考虑使用 for(let i = 0; iterable[i];i++) 而不是 for(let i = 0; i < iterable.length; i++) for(设i=0;i

是否应该考虑使用

for(let i = 0; iterable[i];i++)
而不是

for(let i = 0; i < iterable.length; i++)
for(设i=0;i
编写
iterable[i]
而不是
i
是不安全的,因为第一个方法将检查
iterable[i]
是真实的还是虚假的,并且在javascript中有
6
falsy值<代码>空,未定义,0',NaN,false

假设您有一个数字或字符串数组,并且使用
iterable[i]
作为循环条件。然后循环将以空字符串或
0
退出。同样,这种方法在迭代布尔数组时会导致严重的问题


但是,如果您在对象数组或其他数组的数组上循环,则很可能不会引起任何问题,但我更希望您使用
I

如果iterable[I]是真实的(就像如果它是对象或数组就可以了),那么循环将停止(可能意外地)如果iterable[I]是falsy值,如0、空字符串、false等。如果未定义iterable[i](循环的结尾),循环也将停止。不,不能使用第一个构造。因为它的行为可能与第二个非常不同。您可以使用构造来遍历iterables。对象数组可以有null元素。@PM77-1是的,但这里我们不认为null是一个对象。这里我只讨论
对象的实例
我用它在HTML元素中循环。children,我认为它不可能是虚假的,除非没有更多的children,对吗?@manhoty,我想是的。