循环语句
循环语句可以让一部分语句重复执行。
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 表达式,如果表达式为 null 或 undefined,则跳过循环并执行后续代码,否则会枚举对象属性来执行循环。
JavaScript 数组是一种特殊的对象,所以也可以通过 for/in 语句来遍历。
for/in 循环并不会遍历对象的所有属性,只有「可枚举」的属性才会遍历到,JavaScript 核心所定义的内置方法就不是「可枚举」的,比如 toString 方法,还有一些内置属性也不是「可枚举」的,而代码中定义的所有属性和方法都是「可枚举」的。
此外,如果 for/in 循环体删除了还未枚举的属性,则这个属性不会被枚举到;如果循环体新增了对象属性,这些属性也不会被枚举到。
无评论