for (var part; parts.length && (part = parts.shift());) {}
我想到了一個for循環只能是這樣的:我如何理解這個循環?
for (var part = 0; i < that.length; part++) {}
那麼,是什麼意思呢?
for (var part; parts.length && (part = parts.shift());) {}
我想到了一個for循環只能是這樣的:我如何理解這個循環?
for (var part = 0; i < that.length; part++) {}
那麼,是什麼意思呢?
讀this可能會解釋很多。
for (initial-expression; condition; final-expression) {
// Block of code.
}
初始表達式在循環開始之前運行一次。
檢查條件是否爲真,如果爲true,則運行最終表達式。
重複執行最終表達式(連同代碼塊),直到條件爲假。
你可以把任何東西放在這些位置上。
你甚至可以做for(;;) { }
這就是所謂的永久循環。
你也可以做一個純循環條件。
for (prop in object)
是最常見的形式。
那循環的等價去研究思維
每個部位做{}
一個for
循環的樣子:
for (<declarations>; <!break_condition>; <after_each_iteration>)
這是最平常看到一個計數器初始化中的第一個語句,否定中斷條件下的小於或大於條件的值,以及最終語句中的計數器遞增值。
但是,三個部分的每一個的內容,只要它們在語法上有效,都可以是任何東西。
所討論的循環遍歷數組或對象的元素parts
,刪除這些元素。與普通
舉例循環使用:
基本上你可以重寫一個for循環這樣
for(var part = 0; i < that.length; part++) {}
改寫爲:
var part = 0;
while (i < that.length) {
// user code
part++;
}
在它是相同的,其他情況下:
for (var part; parts.length && (part = parts.shift());) {}
改寫爲:
var part;
while (parts.length && (part = parts.shift())) {
// user code
// no post code
}
那麼,是什麼意思呢?
這意味着有人不寫好代碼。
它應該是類似....
while (parts.length > 0)
{
var parts = parts.shift();
if (parts == null)
break;
...
,它不回答問題,而且完全是主觀的。 – Mat 2011-04-02 14:59:43
不完全,'部分'在問題的循環中被清空。 – Mat 2011-04-02 14:48:26
true ..好點 – BugFinder 2011-04-02 14:57:57