javascript基础知识之循环(三)

js中的循环语句

  • for循环
  • while循环
  • do while循环

何为循环

 在程序中,反复被执行的语句叫做循环体,循环体是否能被重复执行,取决于循环的终止条件,由循环体及循环的终止条件组成的语句叫做循环语句

循环的目的

可以重复执行某些代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>for循环初体验</title>
</head>

<body>

</body>
<script>
    for (var i = 0; i < 100; i++) {
        console.log('hello word');
    }
</script>

</html>


在这里插入图片描述

for循环

目的:可以重复执行某些代码,通常给计数有关。

语法

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

  • 初始化变量:通常被用来计数,使用var来声明
  • 条件表达式:取决于循环体的终止条件
  • 操作表达式:用来更新初始化变量

for循环的执行过程


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>for循环</title>
</head>

<body>

</body>
<script>
    for (var i = 1; i <= 100; i++) {
        console.log('hello 尧子陌');
    }
</script>

</html>

在这里插入图片描述

执行原理

i = 1 只会被执行一次,执行完毕后,执行条件表达式,若满足,则执行循环体的语句,若不满足,则跳出循环体。然后执行条件表达式,判断条件表达式是否满足,若满足,则执行循环体的语句,若不满足,则跳出循环体

for循环之断点调试

在程序的某一行设置断点,以便更好的观察程序是如何运行的

步骤如下

  • 按f12键进入sources(根源),在需要设置断点的当前行设置店,刷新浏览器
  • 按上下箭头进行下一步操作

通过watch更好的观察变量的值的变化

在这里插入图片描述

for循环之执行相同的代码

通过prompt输入的值转换成整数来控制循环的次数

  <!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>for循环之执行相同的代码</title>
</head>

<body>

</body>
<script>
    var user = parseInt(prompt('请输入次数'));
    for (var i = 1; i <= user; i++) {
        console.log('Hello Word');
    }
</script>

</html>

在这里插入图片描述

通过for循环可之执行不同的代码

输出一个人1岁及100岁,并提示出生及死亡


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>for循环之执行不同的代码</title>
</head>

<body>

</body>
<script>
    for (var i = 1; i <= 100; i++) {
        if (i == 1) {
            console.log('欢迎你 来到美丽的世界');
        } else if (i == 100) {
            console.log('你已经死亡了');
        } else {
            console.log('恭喜你' + i + '岁');
        }
    }
</script>

</html>

在这里插入图片描述

for循环可之执行相同的操作

求1~100的累加和


  <!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>for循环之执行相同的操作</title>
</head>

<body>

</body>
<script>
    // 声明求和的变量
    var sum = 0;
    for (var i = 1; i <= 100; i++) {
        sum += i
    }
    console.log(sum);
</script>

</html>

在这里插入图片描述

思路如下

  • 要循环100次,需要一个计数器i
  • 需要一个存储结果的值为sum
  • 计算公式:sum=sum+i

for循环之求1~100的平均数

求1~100之间的平均数


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>for循环之求1~100的平均数</title>
</head>

<body>

</body>
<script>
    //声明一个求和的变量
    var sum = 0;
    var average = 0;

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

</html>



在这里插入图片描述

for循环求1~100中所有奇数和偶数的和.

思路如下:如何判断一个数为偶数呢?

解:能被2整除且余数为0,则为偶数,反之为奇数。


 <!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>for循环之求1~100偶数与奇数的和</title>
</head>

<body>

</body>
<script>
    // 声明求偶数的和
    var even = 0;
    // 声明求奇数的和
    var odd = 0;

    for (var i = 0; i <= 100; i++) {
        if (i % 2 == 0) {
            even += i
        } else {
            odd += i
        }
    }
    console.log('1至100 所有偶数的和', even);
    console.log('1至100 所有奇数的和', odd);
</script>

</html>

在这里插入图片描述

for循环求100以内能被3整除的和

 
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>for循环之求1~100能被3整除的和</title>
</head>

<body>

</body>
<script>
    var result = 0;
    for (var i = 1; i <= 100; i++) {
        if (i % 3 == 0) {
            result += i
        }
    }
    console.log('1~100能被3整除的和', result);
</script>

</html>

在这里插入图片描述

for循环之学生案例

弹出输入框,输入班级总人数,求出总成绩及平均成绩sum


分析

1.弹出输入框,用户输入班级的总人数(userName)

2.依次输入学生的成绩(保存起来为sorce),,需要用到for循环,弹出的输入框的次数跟班级总人数有关.条件表达式i<=userName

3.程序内部处理,计算总成绩(sum),之后再计算平均值(average)


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>for循环之求学生的总成绩及平均成绩</title>
</head>

<body>

</body>
<script>
    // 声明求总成绩的变量
    var sum = 0;
    // 声明求平均数的变量
    var average = 0;

    // 弹出输入框 输入班级总人数
    var userName = parseFloat(prompt('请输入班级总人数'));

    for (var i = 1; i <= userName; i++) {
        // 弹出输入框 学生输入自己的成绩
        var score = parseFloat(prompt('请输入' + i + '个学生的成绩'));

        // 求学生的总成绩
        sum += score;
    }
    // 求学生的平均成绩
    var average = sum / userName;
    alert('学生的总成绩:' + sum);
    alert('学生的平均成绩' + average);
</script>

</html>
    


在这里插入图片描述

for循环之打印n行星星

分析

1.通过prompt输入的值控制星星的个数
2.通过字符串追加的方式在控制台打印星星


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>for循环之打印n行星星</title>
</head>

<body>

</body>
<script>
    // 声明一个空字符串
    var str = ''
    var user = parseInt(prompt('请输入打印星星的个数'));
    for (var i = 1; i <= user; i++) {
        str += '★'
    }
    console.log(str);
</script>

</html>

在这里插入图片描述

for循环之双重for循环

在for循环的基础上嵌套一个for循环,被称为双重for循环

语法


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

注意事项

  • 内循环可以看做外循环的语句
  • 外循环执行一次,内循环执行全部
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>双重for循环的执行过程</title>
</head>

<body>

</body>
<script>
    for (var i = 1; i <= 3; i++) {
        console.log('外层for循环执行的' + i + '次');
        for (var j = 1; j <= 3; j++) {
            console.log('内层for循环执行的' + j + '次');
        }
    }
</script>

</html>
   


在这里插入图片描述

双重for循环之打印5行5列的星星

  • 外层循环负责打印5行星星
  • 内层循环负责一行打印5个星星

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>双重for循环之打印5行5列的星星</title>
</head>

<body>

</body>
<script>
    var str = ''
    for (var i = 0; i < 5; i++) {
        for (var j = 0; j < 5; j++) {
            str += '★'
        }
        str += '\n'

    }
    console.log(str);
</script>

</html>

在这里插入图片描述

双重for循环之输入N行N列的星星


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>双重for循环之打印n行n列的星星</title>
</head>

<body>

</body>
<script>
    var str = ''
    var row = parseInt(prompt('请输入行数'));
    var cols = parseInt(prompt('请输入列数'));
    for (var i = 1; i <= row; i++) {
        for (var j = 1; j <= cols; j++) {
            str += '★'
        }
        str += '\n'
    }
    console.log(str);
</script>

</html>

在这里插入图片描述

双重for循环之打印倒三角形

核心思路:j= i ; j<10 ; j++

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>双重for循环之打印倒三角形</title>
</head>

<body>

</body>
<script>
    var str = ''
    for (var i = 0; i < 10; i++) {
        for (var j = i; j < 10; j++) {
            str += '★'
        }
        str += '\n'
    }
    console.log(str);
</script>

</html>

在这里插入图片描述

双重for循环之打印正三角形

核心思路:j=0;j<i;j++

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>双重for循环之打印正三角形</title>
</head>

<body>

</body>
<script>
    var str = ''
    for (var i = 0; i < 10; i++) {
        for (var j = 0; j < i; j++) {
            str += '★'
        }
        str += '\n'
    }
    console.log(str);
</script>

</html>

在这里插入图片描述

双重for循环之打印九九乘法表

  • 外层控制行数 总共需要循环9行
  • 内层控制列数 核心:j<=i
  • 公式: j + ‘*’ + i + ‘=’ + i * j + ‘\t’
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>双重for循环之打印九九乘法表</title>
</head>

<body>

</body>
<script>
    var str = '';
    for (var i = 1; i <= 9; i++) {
        for (j = 1; j <= i; j++) {
            str += j + '*' + i + '=' + i * j + '\t'
        };
        str += '\n'
    }
    console.log(str);
</script>

</html>

在这里插入图片描述

for循环之总结

  • for循环可以重复执行某些代码
  • for循环可执行不同的代码
  • 双重for循环,外循环执行一次,内循环全部执行。

while循环

语法

操作表达式
while(条件表达式) {
    //循环体代码
    操作表达式
    
}

注意事项

  • while循环中的条件表达式若为true,则执行循环体的语句,反之为false,则不执行循环体的语句
  • 执行完循环体的语句后,操作表达式会进行自增,会继续判断条件表达式是否满足(上述步骤)
  • while循环可以进行更复杂的条件判断。

while循环之打印hello word

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>while循环</title>
</head>

<body>

</body>
<script>
    var i = 1;
    while (i <= 100) {
        console.log('Hello Word');
        i++
    }
</script>

</html>

在这里插入图片描述

while循环之打印人的一生并提示出生及死亡


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>while循环之打印人的一生</title>
</head>

<body>

</body>
<script>
    var i = 1;
    while (i <= 100) {
        if (i == 1) {
            console.log('恭喜你 出生了');
        } else if (i == 100) {
            console.log('恭喜你 已经飞升仙界');
        } else {
            console.log('你已经' + i + '岁');
        };
        i++
    }
</script>

</html>

在这里插入图片描述

while循环之求1~100整数的累加和


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>while循环之求1~100整数的累加和</title>
</head>

<body>

</body>
<script>
    var i = 1;
    var sum = 0;
    while (i <= 100) {
        sum += i;
        i++
    }
    console.log('1~100整数的累加和:' + sum);
</script>

</html>

在这里插入图片描述

while循环之条件判断(你爱我吗)

要求:弹出输入框,除非用户输入我爱你,则停止询问,否则一直无限询问。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>while循环之条件判断(你爱我吗)</title>
</head>

<body>

</body>
<script>
    var user = prompt('你爱我吗?');
    while (user != '我爱你') {

        user = prompt('你爱我吗?')
    }
    alert('我也爱你 宝贝')
</script>

</html>


在这里插入图片描述

do while循环

do while循环是while循环的变体,do while循环至少会执行一次循环体的代码,再去执行操作表达式使变量进行自增或自减,再去判断条件表达式,若为true,则执行循环体的语句,false则不执行
var i =1;
do {
    //循环体语句
    操作表达式
}while(条件表达式)

do while循环之打印人的一生

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>do while循环之打印人的一生</title>
</head>

<body>

</body>
<script>
    var i = 1;
    do {
        console.log('你已经' + i + '岁');
        if (i == 1) {
            console.log('恭喜你 出生了');
        } else if (i == 100) {
            console.log('恭喜你 飞升仙界');
        }
        i++
    } while (i <= 100)
</script>

</html>

在这里插入图片描述

do while循环之打印1~100之间所有整数的和

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>do while循环求1~100整数的累加和</title>
</head>

<body>

</body>
<script>
    var i = 1;
    var sum = 0;
    do {
        sum += i;
        i++
    } while (i <= 100);
    console.log('1~100整数的累加和:' + sum);
</script>

</html>

在这里插入图片描述

do while循环之条件判断(你爱我吗)

要求:弹出输入框,除非用户输入我爱你,则停止提示询问,否则会一直询问下去。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>do while循环之条件判断(你爱我吗)</title>
</head>

<body>

</body>

<script>
    do {
        var user = prompt('你爱我吗');

    } while (user != '我爱你')

    alert('我也爱你 宝贝')
</script>

</html>

在这里插入图片描述

循环之总结

  • JS中的循环:for循环 while循环 di while循环
  • 在特殊情况下,三者可以相互替换
  • do while是while的变体,和while的区别是执行顺序不一样,while循环先判断后执行,do while循环至- 少执行一次
  • 重点放在for循环

continue break的区别

continue

continue:跳出本次循环,进行下次循环

求1~100内能被7整除之外所有整数的和

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>continue之求1~100内能被7整除之外所有整数的和</title>
</head>

<body>

</body>
<script>
    var sum = 0;
    for (i = 1; i <= 100; i++) {
        if (i % 7 == 0) {
            continue
        };
        sum += i
    }
    console.log('1~100内能被7整除的整数累加和:' + sum);
</script>

</html>

在这里插入图片描述

break

立即跳出整个循环,不再进行下次循环

i等于3的时候,跳出整个循环

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>break</title>
</head>

<body>

</body>
<script>
    for (var i = 0; i <= 5; i++) {
        if (i == 3) {
            break
        }
        console.log(i);
    }
</script>

</html>

在这里插入图片描述

简易ATM机

在这里插入图片描述
使用最简单的switch语句即可


 <!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>简易ATM</title>
</head>

<body>

</body>
<script>
    // 简易ATM机
    var userName = parseInt(prompt('请输入操作\n1.存钱\n2.取钱\n3.显示余额\n4.退出'))

    // 本金
    var capital = 100;

    switch (userName) {
        case 1:
            var money = parseFloat(prompt('请输入存钱的金额'));
            var capital = capital + money;
            alert(capital);
            break;
        case 2:
            var cash = parseFloat(prompt('请输入取钱的金额'));
            if (cash > capital) {
                alert('金额不足')
            } else if (cash < capital) {
                var capital = capital - cash;
                alert('余额为:' + capital)
            };
            break
        case 3:
            alert('余额为:' + capital);
            break;
        case 4:
            alert('退出');
            break;
        default:
            alert('输入有误  重新输入')
    }
</script>

</html>



在这里插入图片描述

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值