2012-07-22 52 views
1

所以我有這段代碼如下:JavaScript的數組循環

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

據我瞭解,在for循環遍歷的div數組的每個元素並打印它們。然而,我無法理解循環如何終止。有人可以向我解釋嗎?

回答

4

由於div = divs[i]將爲undefined,因此當i超出範圍時,循環終止。

由於undefined是錯誤的值,因此認爲條件未被滿足,並且循環停止。

請注意,您正在執行分配,而不是比較。賦值表達式返回分配的值,並且該值用於該條件。

您還應該注意,只有在Array的成員都不是虛假的情況下,該技術纔是可靠的。例如,如果陣列中有0,它將提前終止。

+1

謝謝你的好評! :-) – Hirvesh 2012-07-22 16:21:13

2

for循環定義是否要終止的部分是第二部分:

div = divs[i] 

通常情況下,你會使用i < divs.length這將產生truefalse。這裏,表達式隨後評估爲"A""B","C"undefinedundefined在這裏的作用類似於false:它終止循環。這是因爲undefined是一個「falsy」值,如false是。 (字母不是。)