循环让一块代码运行多次。
// 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" );
}