天天看点

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

继续阅读