循环语句
循环语句可以让一部分语句重复执行。
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
循环体删除了还未枚举的属性,则这个属性不会被枚举到;如果循环体新增了对象属性,这些属性也不会被枚举到。
No Comments