JS流程控制-循环

1,182 阅读9分钟

目录

一.循环的目的

二.循环的种类

1.for循环
1.1for循环语法结构
1.2for循环重复执行相同或不同的代码
2.双重for循环
2.1双重for语法结构
2.2双重for循环典型案例
3.while循环
3.1while循环语法结构
3.2while循环典型案例
4.do-while循环
4.1do-while语法结构
4.2do-while循环典型案例
5.continue关键字和break关键字
5.1continue关键字
5.2break关键字

三.循环小结

1.for循环小结
2.while do-while循环小结
3.总结

一.循环的目的

在实际问题中,有许多具有规律性的重复操作,因此程序中要完成这类操作就需要重复执行这些语句。而循环可以让我们在实际操作中重复执行某些代码,循环便让我们的程序变得更加简单高效。

二.循环的种类

1.for循环 (JS中最主要的循环)

在程序中,一组被重复执行的语句称之为循环体,能否继续执行,取决于循环的终止条件,由循环体及循环的终止条件组成的语句,循环语句

1.1for循环语法结构

for循环主要用于把某些代码循环若干次,通常与计数有关,其语法结构如下:

for(初始化变量;条件表达式;操作表达式){
     //循环体
}

1)初始化变量 用var声明一个普通变量,通常用于作为计数器使用

2)条件表达式 用于决定每一次循环是否执行,就是终止条件

3)操作表达式 是每次循环最后执行的代码,常用于我们计数器变量

代码体验:重复打印100句Hello!

for (var i = 1; i < 100; i++) {

            console.log('Hello!');
        }

代码执行过程分析

a.首先执行里面的计数器变量 var i = 1; 但是这句话在for循环里面只执行一次

b.根据i <= 100,判断是否满足条件,如果满足条件则执行循环体,不满足则退出循环

c.最后执行 i++ ,i++是单独执行的代码 递增 第一轮结束

d.接着去执行i <= 100 如果满足条件,则执行循环体,否则退出循环

1.2for循环重复执行相同或不同的代码

1)for循环可以执行相同的代码

var num=promopt('请输入次数');
for(var i = 1; i <= num; i++){
    console.log('加油咯');
}

2)for循环可以执行不同的代码

因为有计数器变量i的存在,i每次循环值都会发生变化

for(var i = 1;i <= 100;i++){
    console.log('我今年'+i+'岁啦');
}

3)for循环执行算术运算操作

案例 1:求1-100之间所有整数的累加和

案例分析

a.需要循环100次,我们需要一个计数器 i

b.我们需要一个存储结果的变量sum,但初始值一定是0

c.核心算法:1+2+3...+100,sum=sum+i;

var sum = 0;
        for (var i = 1; i < 100; i++) {
            sum = sum + i;
            sum += i;
        }
        console.log(sum);

案例2:求1-100之间所有整数的累加和的平均值

案例分析:相较于案例1的基础上我们将变量sum替换为求平均值的变量average ,并添加了一个average =sum/100;的运算过程

var sum = 0;
        var average = 0;
        for (var i = 0; i <= 100; i++) {
            sum += i;
        }
        average = sum / 100;
        console.log(average);

案例3:求1-100之间能被三整除的数的和

案例分析:此案例我们相较于之上案例,多了一个if语句来筛选出1-100之间能被3整除的数,在对其进行整数求和

var sum = 0;
        for (var i = 0; i < 100; i++) {
            if (i % 3 == 0) {
                sum += i;
            }
        }
        console.log(sum);
2.双重for循环

很多情况下,单层for循环并不能满足我们的需求,比如打印一个五行五列的的图形,打印一个倒得直角三角形,这些都要通过循环嵌套来实现。

循环嵌套是在一个循环语句中在定义一个循环语句的语法结构,例如在一个for循环语句中在嵌套一个for循环,我们将其称为双重for循环

2.1双重for语法结构

语法结构如下:

for(外层的初始化变量;外层的条件表达式;外层的操作表达式) {
            for(内层的初始化变量;内层的条件表达式;内层的操作表达式){
                //执行语句;
            }
        }

我们可以将里面的循环看做是内层循环的语句,外面循环执行一次,里面循环执行全部。

代码体验

for (var i = 1; i < 3; i++) {
            console.log('这是第' + i + '外层for循环');
            for (var j = 1; j < 3; j++) {
                console.log('这是第' + j + '层内层for循环');
            }
        }

运行结果2022-11-18 (6).png

2.2双重for循环典型案例

案例1:打印5行5列的星星

案例分析

a.for循环内层负责打印1行5个星星

b.for循环外层负责打印5行星星

var str = '';
        for (var i = 1; i <= 5; i++) {
            // 外层负责打印5行
            for (var j = 1; j <= 5; j++) {
                str = str + '*';
            }
            // 如果一行打印完成5个星星后便另起一行
            str = str + '\n'
        }
        console.log(str);

案例2:打印倒三角的星星

案例分析

a.一共有n行,但每行行数不一样,所以利用双层for循环,

b.外层循环控制行数i,循环n次可以打印n行

c.内层循环控制星星个数

d.核心算法:var j = i; j <= n; j++

var str = '';
        var n = prompt('请输入n的值');
        for (var i = 1; i <= n; i++) {//外层循环控制行数
            for (var j = i; j <= n; j++) {//里层循环控制个数
                str = str + '*';
            }
            str = str + '\n';
        }
        console.log(str);

案例3:打印九九乘法表(重要案例)

案例分析

a.一共有九行但每行个数不同,使用双层for循环

b.外层for循环控制i,循环9次,打印9行

c.内层for循环控制每行公式j

d.核心算法:每一行公式的个数恰好与行数相等

var str = '';
        for (var i = 1; i <= 9; i++) {
            for (var j = 1; j <= i; j++) {
                // 注意注意使用j*i的话会更符合常规所见的99乘法表  记得末尾加一个'\t'让乘法与乘法之间空开来
                str += j + '*' + i + '=' + i * j + '\t';
            }
            str += '\n';
        }
        console.log(str);
3.while循环

while循环可以在表达式为真的前提下,循环执行特定的代码,知道表达式不为真的时候结束循环。

3.1while循环语法结构

语法结构如下:

while (条件表达式) {
             //循环体
         }

执行思路:

a.先执行条件表达式,如果为ture,则执行循环体代码,如果为false,则退出循环,执行后面的代码

b.执行循环体代码

c.循环体代码执行完毕后,程序会继续判断执行条件表达式,如条件仍为ture,则会继续执行循环体,知道循环条件为false,退出整个循环

3.2while循环典型案例

案例:弹出一个提示框,你爱我吗? 除非输入我爱你,否则一直询问

案例分析

a.弹出输入框,要求用户输入

b.判断条件较复杂,我们使用while循环

c.while循环的语句中只要输入的不是我爱你,就一直循环

var str = prompt('你爱我吗?');
        while (str != '我爱你') {
            // 这里前面那记得加str
            str = prompt('你爱我吗?');
        }
        alert('我爱你啊!')
4.do-while循环

do-while语句其实是while语句的一个变体。该循环会先执行一次代码块,然后对条件表达式进行判断, 如果条件为真就会重复执行循环体,否则退出循环。

4.1do-while语法结构

语法结构如下:

do {
           //循环体
         } while (条件表达式)

执行思路:

a.先执行一次循环体代码

b.在执行条件表达式如果为ture,则执行循环体代码,如果为false,则退出循环,执行后面的代码

注意:先执行循环体,在判断,我们会发现do-while循环语句至少会执行一次循环体代码

4.2do-while循环典型案例

案例:计算1-100间的所有整数和

var sum = 0;
        var i = 1;
        do {
            console.log(sum);
            sum += i;
        } while (i <= 100)
5.continue关键字和break关键字
5.1continue关键字

continue关键字用于立即跳出本次循环,继续下一次循环(本次循环体中,continue之后的代码会少执行一次)

案例:输出1-100除了能被7整除外的所有整数和

案例分析:当遇到i=7时,利用countine退出当前循环执行下一次循环

var sum = 0;
        for (var j = 1; j <= 100; j++) {
            if (j % 7 == 0) {
                continue;
            }
            sum += i;
        }
5.2break关键字

break关键字用于立即跳出整个循环(循环结束)

案例:利用break关键字输出5以内小于3的数字

案例分析:利用if语句结合break使i=3时跳出整个循环

for (var i = 1; i <= 5; i++) {
            if (i == 3) {
                break;
            }
            console.log('这是第' + i + '个');
        }

三.循环小结

1.for循环小结

1)for循化可以重复执行某些相同的代码

2)for循环可以重复执行些许不同的代码,因为我们有计数器

3)for循环可以重复执行某些操作,比如算术运算符加法操作

4)随着需求的增加,双重for循环可以做更多更有益的效果

5)双层for循环外层循环一次,内层for循环全部执行

6)for循环是循环条件和数字直接相关的循环

2.while do-while循环小结

1)while和do-while可以做更加复杂的判断条件

2)while和do-while执行顺序不同,while先判断后执行,do-while先执行一次后判断

3)while和do-while执行次数不一样,do-while至少执行一次循环体,而while可能一次也不执行

3.总结

JS中三个循环,for,while,do-while,三个循环很多情况下都是可以交替使用的,如果是用来计数次,和数字有关的,三者都可以使用,但我们更喜欢使用for循环,while循环和do-while循环可以做更复杂一些的判断条件,比for循环更加灵活一些,但在实际工作中,我们更常用for循环语句,它的写法更加的简洁直观。