循环语句

循环语句可以让一部分语句重复执行。

while

while 是一个基本循环语句,在执行 while 语句之前,先计算表达式的值,如果是假值则跳过循环体的逻辑执行后续语句,否则执行循环体中的逻辑,然后再次计算表达式的值,依次类推,直到表达式的值为假值为止:

var count = 0;
while (count < 10) {
    console.log(count);
    count++;
}

do/while

do/while 语句和 while 语句非常类似,不同之处在于它是在循环的尾部而不是顶部检测循环表达式的值,这就意味着循环体至少执行一次:

a = [1,2,3,4,5];
i = 0;
len = 3;
do {
    console.log(a[i]);
} while (++i < len);

for

for 语句提供了一种比 while 语句更加方便的循环控制结构,将计数器初始化、条件判断和计数器更新整合成为循环语法的一部分:

for (var count = 0; count < 10; count++)
    console.log(count);

更复杂的 for 循环语句:

var sum = 0;
for (var i = 0, j = 10; i < 10; i++, j--)
{
    sum += i * j;
}

for(;;)while(true) 等价,是个死循环。

for/in

for 语句使用场景不同,for 语句通常用来遍历数组元素,for/in 语句通常用来遍历对象属性:

for (property in object) {
    statement
}

在执行 for/in 语句过程中,首先会计算 object 表达式,如果表达式为 nullundefined,则跳过循环并执行后续代码,否则会枚举对象属性来执行循环。

JavaScript 数组是一种特殊的对象,所以也可以通过 for/in 语句来遍历。

for/in 循环并不会遍历对象的所有属性,只有「可枚举」的属性才会遍历到,JavaScript 核心所定义的内置方法就不是「可枚举」的,比如 toString 方法,还有一些内置属性也不是「可枚举」的,而代码中定义的所有属性和方法都是「可枚举」的。

此外,如果 for/in 循环体删除了还未枚举的属性,则这个属性不会被枚举到;如果循环体新增了对象属性,这些属性也不会被枚举到。

上一篇: 条件语句

下一篇: 跳转语句