1

所以我在下面得到了这段代码:

var divs = ["A", "B", "C"];
for (var i = 0, div; div = divs[i]; i++) {  
  print(div);
}

据我了解,for 循环遍历 divs 数组的每个元素并打印它们。然而,我无法理解循环是如何终止的。有人可以向我解释一下吗?

4

2 回答 2

4

循环终止,因为div = divs[i]将是undefined何时i超出范围。

因为undefined是假值,所以认为条件不满足,循环停止。

请注意,您正在做一个assignment,而不是一个比较。赋值表达式返回已分配的值,该值用于条件。

您还应该注意,只有当 Array 的所有成员都不是假的时,这种技术才是可靠的。例如,如果 Array 中有 a 0,它将提前终止。

于 2012-07-22T16:09:09.183 回答
2

for定义是否终止的循环部分是第二部分:

div = divs[i]

通常,您会使用i < divs.lengthwhich yieldtruefalse. 在这里,表达式的计算结果为"A", "B", "C", 和undefined, 随后。undefinedfalse这里一样:它终止循环。那是因为undefinedis 是一个像 is 这样的“虚假”值false。(字母串不是。)

于 2012-07-22T16:10:23.980 回答