所以我在下面得到了这段代码:
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.length
which yieldtrue
或false
. 在这里,表达式的计算结果为"A"
, "B"
, "C"
, 和undefined
, 随后。undefined
像false
这里一样:它终止循环。那是因为undefined
is 是一个像 is 这样的“虚假”值false
。(字母串不是。)