下面的javascript有什麼作用?Javascript - 這行是做什麼用的?
var groups = countrylist.split(',');
for(var i = -1, group; group = groupsCounty[++i];){
...
}
下面的javascript有什麼作用?Javascript - 這行是做什麼用的?
var groups = countrylist.split(',');
for(var i = -1, group; group = groupsCounty[++i];){
...
}
With i starting at -1
increase i by 1
get the ith element from the groupsCounty array
if there is no such element: stop
otherwise: assign it to group and carry on (with whatever "…" is)
它的優化版本:
for (var i = 0; i < groupsCounty.length; i++;){
var group = groupsCounty[i];
…
}
它使用group中存在的值作爲守護條件迭代組的元素。即使用JavaScript Truthiness來控制循環迭代的次數,因爲當沒有值可以分配給它時,保護將是錯誤的。
for
loop遍歷groups
數組,直到groupsCounty[++i]
返回一個錯誤的值。
下列術語的用法:
for (<initial-expression>; <condition>; <final-expression>)
的初始表達var i = -1, group
聲明變量i
和group
。對於每次迭代,循環條件group = groupsCounty[++i]
指定下一個數組值爲group
。如果該表達式是錯誤的(例如groupsCounty[++i]
在出界時返回未定義),則循環停止。並且最終表達式爲空,因爲i
已經在關聯表達式中增加。
這相當於
for (var group in groupsCounty) {
...
}
對於具有對索引的訪問(i
)的附加價值。
'group'會__be _指數值,那麼您將不得不使用'anotherVariable = groupdCountry [group]'取消引用該數組來獲取該值。 – AnthonyWJones 2010-02-12 15:56:47
這不等於。 'for ... in'循環以未定義的順序枚舉對象的所有屬性,包括從對象原型繼承的屬性。所以你有一個不同的循環順序,可能會迭代更多的屬性。另外,在你的例子中,「group」將是屬性名稱而不是屬性值,因爲它在原始問題中。 – 2010-02-12 15:59:19
它這樣做: -
var groups = countrylist.split(',');
for(var i = 0; i < groups.length; i++)
{
var group = groups[i]
...
}
唯一的區別是,上面的是更爲常見,更容易辨認。你不會發布上面的代碼,問「這是幹什麼?」。
你發佈的代碼是一個聰明的開發,但不一定是好的編碼實踐的例子。
'groups'和'groupsCounty'應該是同一個變量嗎? – 2010-02-12 15:46:29
我很想知道 - 我試圖找出頁面上有什麼損壞:p – digiguru 2010-02-12 16:03:23
這是肯定的。更改'var groups = countrylist.split(',');' 'var groupsCounty = countrylist.split(',');'。 可能有人重構並重命名該變量,但沒有完成他的工作。 – 2010-02-12 16:05:41