【发布时间】:2014-10-10 21:27:04
【问题描述】:
我遇到了一种不同类型的 for 循环,我不经常看到或使用它。我试图弄清楚,但在这个过程中变得更加困惑。它没有第三个参数,甚至没有检查方法打破循环。在这里它迭代一个数组并打印它的值。实际上它遇到某个索引的“未定义”值,但我没有告诉它在遇到未定义时中断。请帮助我在这里打破这个难题。 ..
(function () {
var a = [1, 2, 3, 4, 5, 6, 7, 8, 9];
for (var i = 0, value; value = a[i++];) {
document.write(value + '</br>');
}
})();
【问题讨论】:
-
value=a[i++]i 正在递增,循环条件直到定义了a[i]的最后一个索引i。 -
for循环执行,直到“条件部分”的值评估为假。 -
这是因为每次迭代都会检查条件
value = a[i++]。并且在检查时i++递增i。当i变得太大时,在数组之外,我将其设为undefined,其评估结果为假。但是永远不要做这样的循环,这是非常糟糕的编程。 -
@SpencerWieczorek 实际上,当目标是在第一个
undefined值处停止时,这可能是一种遍历松散数组的有效方法。 -
@user3138436 出于学习目的,这很好。它只是专注于您在遍历数组时不需要使用
.length。 JavaScript 只用于查找未定义的索引是可以的。但在任何其他语言中,这会给你一个index out-of-bounds错误。
标签: javascript arrays for-loop