for循环语句
var a = 0;
var i;
for (i=0; i<=100; i++) {
a += i;
}
a; // 5050
分析for循环语句:
- i=0 这是初始条件,将变量i置为0;
- i<=100 这是判断条件,满足时就继续循环,不满足就退出循环;
- i++ 这是每次循环后的递增条件,由于每次循环后变量i都会加1,因此它终将在若干次循环后不满足判断条件i<=10000而退出循环。
这里留下一个小练习:
利用for循环计算1 * 2 * 3 * ... * 12的结果?
let x = 1;
for(let m=1; m<=10; m++){
x *= m;//等价于x = x*m
}
console.log(x);//479001600
for循环最常用的地方是利用索引来遍历数组:
let arr = ['google','baidu','bing'];
for(let i=0; i<arr.length; i++){
console.log(arr[i]);//google baidu bing
}
for循环的3个条件都是可以省略的,如果没有退出循环的判断条件,就必须使用break语句退出循环,否则就是死循环:
let a = 0;
for(;;){// 将无限循环下去
if(a>100){
break;// 通过if判断是否退出循环
}else{
a++;
}
}
for...in循环语句
//for循环的一个变体是for ... in循环,它可以把一个对象的所有属性依次循环出来:
let Obj = {
a:'google',
b:'baidu',
c:'bing'
}
for(let key in Obj){
console.log(key);//a b c
}
//由于Array也是对象,而它的每个元素的索引被视为对象的属性,因此,for ... in循环可以直接循环出Array的索引:
let arr = ['Google','baidu','bing']
for(let i in arr){
//请注意,for ... in对Array的循环得到的是String而不是Number
console.log(i);//0 1 2
console.log(arr[i]);//Google baidu bing
console.log('arr的索引:'+ i +' ' + 'arr的值:' + arr[i]);//arr的索引:0 arr的值:Google...
}
while语句
for循环在已知循环的初始和结束条件时非常有用。而上述忽略了条件的for循环容易让人看不清循环的逻辑,此时用while循环更佳。
while循环只有一个判断条件,条件满足,就不断循环,条件不满足时则退出循环。比如我们要计算50以内所有奇数之和,可以用while循环实现
let a = 0;
let x = 101;
while(x>0){
a += x;
x = x-2;
}
console.log(a);//2601
//在循环内部变量x不断自减,直到变为-1时,不再满足while条件,循环退出
do ... while
它和while循环的唯一区别在于,不是在每次循环开始的时候判断条件,而是在每次循环完成的时候判断条件
let a = 0
do{
a += 1;
}while(a<50);
console.log(a);//50
//使用do...while要小心因为循环体至少要执行一次,而for和while则可能一次都不执行
练习
请利用循环遍历数组中的每个名字
请尝试for循环和while循环,并以正序、倒序两种方式遍历
var arr = ['Bart', 'Lisa', 'Adam'];
//for循环正序
for(let i = 0; i<arr.length; i++){
console.log(arr[i]);//Bart Lisa Adam
}
//for循环降序
for(let i = arr.length-1; i>=0; i--){
console.log(arr[i]);//Adam Lisa Bart
}
//while正序
let i = 0;
while(i<=2){
console.log(arr[i]);//Adam Lisa Bart
i++;
}
//while倒序
let i = 2;
while(i>=0){
console.log(arr[i]);//Adam Lisa Bart
i--;
}