所以我在下面得到了这段代码:
var divs = ["A", "B", "C"];
for (var i = 0, div; div = divs[i]; i++) {
print(div);
}
据我了解,for 循环遍历 divs 数组的每个元素并打印它们。然而,我无法理解循环是如何终止的。有人可以向我解释一下吗?
所以我在下面得到了这段代码:
var divs = ["A", "B", "C"];
for (var i = 0, div; div = divs[i]; i++) {
print(div);
}
据我了解,for 循环遍历 divs 数组的每个元素并打印它们。然而,我无法理解循环是如何终止的。有人可以向我解释一下吗?
循环终止,因为div = divs[i]将是undefined何时i超出范围。
因为undefined是假值,所以认为条件不满足,循环停止。
请注意,您正在做一个assignment,而不是一个比较。赋值表达式返回已分配的值,该值用于条件。
您还应该注意,只有当 Array 的所有成员都不是假的时,这种技术才是可靠的。例如,如果 Array 中有 a 0,它将提前终止。
for定义是否终止的循环部分是第二部分:
div = divs[i]
通常,您会使用i < divs.lengthwhich yieldtrue或false. 在这里,表达式的计算结果为"A", "B", "C", 和undefined, 随后。undefined像false这里一样:它终止循环。那是因为undefinedis 是一个像 is 这样的“虚假”值false。(字母串不是。)