2015-06-29 45 views
1

Google API 3我看到下面的代碼,這讓我很想知道一點。JavaScript中for循環的單元化變量 - 它的語義是什麼?

... 
for (var i = 0, marker; marker = markers[i]; i++) { 
     marker.setMap(null); 
} 
... 

for循環的循環變量的初始化放在另一個變量沒有分配之後。

我想知道它的語義是什麼。有人可以解釋嗎?

說實話,我甚至不知道如何搜索,因爲我不知道如何調用它。 (我得到的搜索結果通常會解釋循環,但不是這個特定的情況)。

回答

2

變量已聲明,其初始值爲undefined

此後不久,變量是for循環測試表達式中賦值表達式的目標。

如果循環塊被執行,那麼這意味着將在塊的主體中​​具有一些「真值」值。循環後,將有一些「falsy」值。

在所有情況下,for循環標頭中的var與普通var語句的處理方式相同。在你的問題中環是完全等同於

var i, marker; 
for (i = 0; marker = markers[i]; i++) { 
    // ... 
} 

注意var聲明—包括那些在for環頭—會被解讀爲聲明(只是聲明,任何初始化表達式分開)被放置在封閉範圍的開始。

+0

基本上,只要'markers [i]'是真的,這個循環就會繼續迭代,對嗎?所以它會迭代'markers'中的所有標記。 – Cerbrus

+0

@Cerbrus不一定。如果'markers'爲'[{},null,{}]',那麼當'i'爲'1'時迭代就會停止,並且最後一個對象會被跳過。 – Pointy

+0

嗯,你說得對。我想知道爲什麼「他們」使用這種方法...... – Cerbrus

相關問題