JavaScript有两种循环,一种是for循环,一种是while循环
for循环
for循环通过初始条件,结束条件以及递增条件来循环执行语句。
利用for循环计算1 * 2 * 3 * … * 10的结果:
var x = 1;
var i;
for (i=2;i<=10;i++){//i=2是初始条件,i<=10是结束条件,i++是每次循环结束之后的递增条件
x=x*i;
}
for循环常用于遍历数组:
var arr = ['Apple', 'Google', 'Microsoft'];
var i, x;
for (i=0; i<arr.length; i++) {
x = arr[i];
console.log(x);
}
for···in循环
for···in循环时for循环的变体,可以将对象的所有属性都循环出来:
var o = {
name: 'Jack',
age: 20,
city: 'Beijing'
};
for (var key in o) {
console.log(key); // 'name', 'age', 'city'
}
还可以使用hasOwnproperty来去掉继承的属性:
var o = {
name: 'Jack',
age: 20,
city: 'Beijing'
};
for (var key in o) {
if (o.hasOwnProperty(key)) {
console.log(key); // 'name', 'age', 'city'
}
}
数组也是对象,而且每个元素对应的索引也可以视为属性:
var a = ['A', 'B', 'C'];
for (var i in a) {
console.log(i); // '0', '1', '2'
console.log(a[i]); // 'A', 'B', 'C'
}
for···in循环得到的都是字符串不是number
while循环
while循环只有一个条件,满足即可执行循环,不满足就跳出循环,很多时候相比for循环看起来更简洁明了,易于理解。
比如计算一百以内所有奇数之和:
var x = 0;
var n = 99;
while (n > 0) {
x = x + n;
n = n - 2;
}
x; // 2500
do … while循环
do···while循环是先循环,再判断条件,无论如何都至少循环一次,而for和while可能不会进行循环。
var n = 0;
do {
n = n + 1;
} while (n < 100);
n; // 100