for循环
<script>
for(循环部分;循环条件;条件迭代){
//循环体;
}
</script>
- 循环部分 声明变量,例如var i=0; 表示计数器从哪里开始;
- 循环条件 变量满足条件才会继续循环,不满足条件时,循环终止(决定执行多少次);
- 条件迭代 更新循环的变量值,循环最后执行的代码,循环每执行一次,变量就变化一次。 来做个小栗子:求和1~100
<script>
var sum = 0;
for(var i = 1;i<=100;i++){
sum = sum+i;
}
document.write(sum);
</script>
代码分析:我们先从for的小括号写起,先定义我们的循环变量i,i就是我们的计数器,i需要限定范围在100以内,因为我们只需要计算1~100的数字,每次循环后,i加1。第一次循环开始,i=1,i<=100,判断可以进入循环体,sum=初始值+i,然后i+1变成了2,第一次循环结束,进入第二次循环……
for-in循环
<script>
for(变量 in 对象){
//循环体;
}
</script>
for-in循环常用于对数组或对象的属性进行循环操作,当对数组循环操作时,就是判断变量是否在数组中,我们先来看下数组是如何使用的:
let arr = ['a','b','c','d','e'];
结合该数组,当我输入一个字母,如果该字母在数组中,就打印“成功”提示:
为什么这段代码显示五个结果呢?因为我们将if循环语句写在了for的循环体内,当我们输入b时,b与i进行判断,此时i已经进入了for循环,所以i会展示数组arr中的每个值,for循环一次,进行一次if循环。所以我们应该在for循环结束之后,再显示结果。
<script>
let arr = ['a', 'b', 'c', 'd', 'e'];
let b = prompt('请输入一个字母:');
let flag = false;
for (var i in arr) {
if (b == arr[i]) {
flag = true;
}
}
if (flag) {
document.write('成功');
} else {
document.write('失败');
}
</script>
双重for循环
<script>
for(外层的循环部分;外层的循环条件;外层的条件迭代){
for(里层的循环部分;里层的循环条件;里层的条件迭代){
//循环体;
}
}
</script>
- 可以把里层的for看成是外层的循环体,也可以在里层的上面或者下面再写循环体;
- 外层变一次,内层变一遍; 我们可以通过下面的例子看一下这个循环过程:
<script>
for(var i = 1;i<=2;i++){
document.write('这是外层的第'+i+'次循环');
for(var j = 1;j<=2;j++){
document.write('这内层的第'+j+'次循环');
}
}
</script>
代码分析:初始i=1,满足i<=2,执行外层的循环体,此时我们就到了循环体第一句,先把“这是外层第1次循环”打印出来,然后进入内层for语句,初始j=1,满足j<=2,执行内层的循环体,打印“这是内层第1次循环”,然后条件迭代j++,j变成了2;满足j<=2,执行内层的循环体,打印“这是内层第2次循环”,然后条件迭代j++,j变成了3;不满足j<=2,内层for循环结束,意味着外层i=1的循环结束,对i条件迭代i++,i=2,进入i的第二次循环……
while循环
<script>
while (循环条件) {
循环操作;
迭代部分;
}
</script>
- 当满足循环条件(true)的时候,才进入循环体;
- while需要计数器,先可以在while上一行声明;
- 死循环:计数器不进行迭代将进入死循环,变量一直满足循环条件,将一直执行循环操作,出不来。 使用while做个小练习——求和100以内的偶数:
<script>
var a = 1;
var sum = 0;
while (a <= 100) {
if (a % 2 == 0) {
sum += a;
}
a++;
}
document.write(sum);
</script>
a++;写在if循环外面的理由:
do-while循环
<script>
do{
循环操作;
}while(循环条件)
</script>
- 先执行一次,再看是否满足循环条件。
- 与while比起来,do-while至少会执行一次循环操作 使用do-while做个小练习——求和100以内的偶数:
<script>
var a = 0;
var sum = 0;
do {
if (a % 2 == 0) {
sum += a;
}
a++;
} while (a <= 100)
document.write(sum);
</script>