天天看點

javascript101之循環for 循環while循環do-while循環break 和 continue

循環讓一塊代碼運作多次。

// 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" );
 
}
           

繼續閱讀