循环

1. for 循环

for 循环,通过 初始条件结束条件递增条件 来循环执行语句块:

var x = 0;
var i;
for (i=1; i<=10; i++) {
    x = x + i;
}

x // 55
var i;
for (i=1; i<=5; i++) {
    console.log(i)
}

1
2
3
4
5

for 循环的控制条件说明:

  • i=1 这是 初始条件,将变量 i 置为 1;
  • i<=10 这是 判断条件,满足时就继续循环,不满足就退出循环;
  • i++ 这是每次循环后的 递增条件,由于每次循环后变量 i 都会加 1,因此它终将在若干次循环后不满足判断条件 i<=10 而退出循环。

for 循环最常用的地方是利用索引来遍历数组:

var arr = ['Apple', 'Google', 'Microsoft'];
var i, x;
for (i=0; i

for 循环的 3 个条件都是可以省略的,如果没有退出循环的判断条件,就必须使用 break 语句退出循环,否则就是死循环:

var x = 0;
for (;;) { // 将无限循环下去
    if (x > 100) {
        break; // 通过if判断来退出循环
    }
    x ++;
}




2. for ... in 循环

for 循环的一个变体是 for ... in 循环,它可以把一个对象的所有属性依次循环出来:

var o = {
    name: 'Jack',
    age: 20,
    city: 'Beijing'
};

for (var key in o) {
    alert(key); // 'name', 'age', 'city'
}

要过滤掉对象继承的属性,用 hasOwnProperty() 来实现:

var o = {
    name: 'Jack',
    age: 20,
    city: 'Beijing'
};
for (var key in o) {
    if (o.hasOwnProperty(key)) {
        alert(key); // 'name', 'age', 'city'
    }
}

for ... in 循环也可以遍历 Array:

var arr = ['A', 'B', 'C'];
for (var i in arr) {
    if (arr.hasOwnProperty(i)) {
        alert.log(a[i]);  // 'A', 'B', 'C'
    }
}

请注意,for ... in 对 Array 的循环得到的是 String 而不是 Number




3. while 循环

while 循环只有一个判断条件,条件满足,就不断循环,条件不满足时则退出循环。

var x = 0;
var n = 99;
while (n > 0) {  // 如果 n>0 执行,反之不执行
    x = x + n;
    n = n - 2;
}
x; // 2500




4. do ... while 循环

do { ... } while() 循环 ,它和 while 循环的唯一区别在于,不是在每次循环开始的时候判断条件,而是在每次循环完成的时候判断条件:

var n = 0;
do {
    n = n + 1;
} while (n < 100);
n; // 100

do { ... } while() 循环要小心,循环体会至少执行1次,而 forwhile 循环则可能一次都不执行。




5. for ... of 循环

for...of... 语句作用于可迭代对象(包括 Array,Map,Set,String,TypedArray,arguments 对象等等)。

let people = ['tom', 'lily', 'lucy']

for (let item of people) {
  console.log(item);
}

tom
lily
lucy

你可能感兴趣的:(循环)