循環讓一塊代碼運作多次。
// A for loop
// logs "try 0", "try 1", ..., "try 4"
for ( var i = 0; i < 5; i++ ) {
console.log( "try " + i );
}
注意在循環裡,變量的範圍不局限在循環塊内,盡管在變量名前有關鍵字var。變量範圍在 範圍部分更深入讨論。
for 循環
for循環由四部分如下結構的語句組成:
for ( [initialisation]; [conditional]; [iteration] ) {
[ loopBody ]
}
在循環開始之前,初始化語句隻運作一次。這給了你機會準備和聲明變量。 條件語句在每次疊代的時候都執行,根據其傳回值決定循環是否繼續。如果條件語句估算出假值,則循環終止。 疊代語句在每次疊代的最後執行,并給你一個機會改變重要變量的狀态。典型的,這包含減少或增加一個計數器,使循壞接近結束。 循環體語句是每次疊代執行的語句。可包含任何語句。通常情況下,将有多條語句要執行,應将這些語句用{...}包含在一個塊内。 這裡有一個典型的for語句:
// A typical for loop
for (var i = 0, limit = 100; i < limit; i++) {
// This block will be executed 100 times
console.log( 'Currently at ' + i );
// Note: the last log will be "Currently at 99"
}
while循環
while循環類似于if語句,除了其語句塊持續執行直到條件為假。
while ( [conditional] ) {
[loopBody]
}
這裡是一個典型的while循環:
// A typical while loop
var i = 0;
while ( i < 100 ) {
// This block will be executed 100 times
console.log( "Currently at " + i );
// increment i
i++;
}
注意到計數器在循環體内增加。把條件和增量組合在一起是可能的,像這樣:
// A while loop with a combined conditional and incrementer
var i = -1;
while ( ++i < 100 ) {
// This block will be executed 100 times
console.log( "Currently at " + i );
}
注意到計數器從 -1 開始并且使用的是前置增量器。
do-while循環
除了循環體在測試條件前至少執行一次的情況,它就和while循環沒什麼差別。
do {
[ loopBody ]
} while ( [conditional] )
這裡是一個do-while循環:
// A do-while loop
do {
// Even though the condition evaluates to false
// this loop's body will still execute once.
alert( "Hi there!" );
} while ( false );
這類循環很少見,因為隻有很少的情況下,需要一個循環,盲目的執行至少一次。無論如何,意識到這點就好。
break 和 continue
通常情況下,循環終止意味着條件語句的計算為假,但有可能通過其循環體内的break語句終止。
// Stopping a loop
for ( var i = 0; i < 10; i++ ) {
if ( something ) {
break;
}
}
你可能想繼續循環而不再運作循環體内的其他剩下的語句。這通過continue語句可以做到。
// Skipping to the next iteration of a loop
for ( var i = 0; i < 10; i++ ) {
if ( something ) {
continue;
}
// The following statement will only be executed
// if the conditional 'something' has not been met
console.log( "I have been reached" );
}