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