JS的几个循环

143 阅读3分钟

for循环

    <script>
        for(循环部分;循环条件;条件迭代){
            //循环体;
        }
    </script>
  1. 循环部分 声明变量,例如var i=0; 表示计数器从哪里开始;
  2. 循环条件 变量满足条件才会继续循环,不满足条件时,循环终止(决定执行多少次);
  3. 条件迭代 更新循环的变量值,循环最后执行的代码,循环每执行一次,变量就变化一次。 来做个小栗子:求和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'];

结合该数组,当我输入一个字母,如果该字母在数组中,就打印“成功”提示: QQ图片20220419224914.png 为什么这段代码显示五个结果呢?因为我们将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>
  1. 可以把里层的for看成是外层的循环体,也可以在里层的上面或者下面再写循环体;
  2. 外层变一次,内层变一遍; 我们可以通过下面的例子看一下这个循环过程:
    <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>
  1. 当满足循环条件(true)的时候,才进入循环体;
  2. while需要计数器,先可以在while上一行声明;
  3. 死循环:计数器不进行迭代将进入死循环,变量一直满足循环条件,将一直执行循环操作,出不来。 使用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>
  1. 先执行一次,再看是否满足循环条件。
  2. 与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>