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,我想是的。