while循环和for循环

215 阅读2分钟

一、循环语句

1.断点调试

作用:学习时可以帮助更好的理解代码运行,工作时可以更快找到bug

浏览器打开调试界面

  1. 按F12打开开发者工具
  2. 点到sources一栏
  3. 选择代码文件

断点:在某句代码上加的标记就叫断点,当程序执行到这句有标记的代码时会暂停下来

1648440168320.png

2.while循环语法

(1)while 循环语法

1648441462905.png

  • 跟if语句很像,都要满足小括号里的条件为true才会进入执行代码
  • while大括号里代码执行完毕后不会跳出,而是继续回到小括号里判断条件是否满足,若满足又执行大括号里的代码,然后再回到小括号判断条件,直到括号内条件不满足,即跳出

(2)while 循环注意事项:循环需要具备三要素

  1. 变量起始值
  2. 终止条件(没有终止条件,循环会一直执行,造成死循环)
  3. 变量变化量(用自增或者自减)

1648441625888.png

While 练习

1.页面输出1-100

<script>
        let i=1;
        while(i<=100){
            document.write(`${i}<br>`);
            i++;
        }
    </script>

2.计算从1加到100的总和并输出

 <script>
        let i = 1;
        let sum = 0;
        while(i<=100){
            sum += i;
            i++;
        }
        document.write(`1加到100的和为:${sum}`);
    </script>

熟练后可做以下优化

  <script>		
		let i = 1;
        let sum = 0;
        while(i<=100){
            sum += i++;
        }
        document.write(`1加到100的和为:${sum}`);
     </script>

3.计算1-100之间的所有偶数和

 <script>
        let i = 1;
        let sum = 0;
        while (i<=100){
            if(i % 2===0){
                sum+=i;
            }
            i++;
        }
        document.write(`1到100的偶数和为:${sum}`);
    </script>

优化

 <script>
        let i = 1;
        let sum = 0;
        while (i<=100){
            (i % 2===0)&&(sum+=i)
            i++;
        }
        document.write(`1到100的偶数和为:${sum}`);
    </script>

4.需求:页面弹出对话框,‘你爱我吗’,如果输入‘爱’,则结束,否则一直弹出对话框

 <script>
        let s=prompt('你爱我吗?');        
        while(s!=='爱'){
            s=prompt('你爱我吗?');
        }
    </script>

5.简易ATM机,实现存款,取款,查看余额,退出的功能

1648468609985.png

分析:

①:循环的时候,需要反复提示输入框,所以提示框写到循环里面

②:退出的条件是用户输入了 4

③:提前准备一个金额预先存储一个数额

④:取钱则是减法操作, 存钱则是加法操作,查看余额则是直接显示金额

<script>
        let money = 100;
        let input;
        while(input !== 4){
            input = +prompt(`请选择你的操作
            1存款
            2取款
            3查看余额
            4退出
            `)
            if(input === 1){
                let num1 = +prompt('输入存款金额');
                money +=num1;
            }else if(input === 2){
                let num2 = +prompt('输入取款金额');
                if(num2>money){
                    alert('余额不足');
                }else{
                    money -= num2; 
                }
            }else if(input === 3){
                alert(`当前余额:${money}`);
            }else if(input === 4){
                console.log('开始退出');
            }
            }
    </script>

3.for循环语法

(1)for循环基本使用

好处:把声明起始值、循环条件、变化值写到一起,让人一目了然

1648469402328.png

练习:求1-100之间所有的偶数和

 <script>
        let sum = 0;
        for(let i = 1; i <=100; i++){
            (i % 2 ===0)&&(sum += i);
        }
        console.log(sum);       
    </script>

(2)退出循环

continue:结束本次循环,继续下次循环 break:跳出所在的循环

   <script>
      // 只显示 奇数 单数
      for (let index = 1; index <= 10; index++) {
        // 判断当前的index是不是奇数
        if (index % 2 !== 0) {
          continue; //跳过循环(不想执行某段代码)
        }
        console.log(index);
      }
    </script> 
  <script>
        for (let index = 1; index <= 10; index++)     {
        // 如果当前的index = 5 ,就不再往下 循环了,就终止循环
        if (index === 5) {
          break;
        }
        // //  index===5&&break // 不能简写 报错!!
        console.log(index);

        // if (index < 5) {
        //   console.log(index);
        // }
        console.log("代码调用的次数",index);
      }
    </script>

(3)for循环嵌套

结构:

1648646851880.png

练习1:页面中打印出5行5列的星星

1648647620575.png

①:利用双重for循环来做

②:外层循环控制打印行,内层循环控制每行打印几个(列)

<script>
        for(i = 1; i <= 5; i++){ 
            // 一行打印五个星星   
            for(j = 1; j <= 5; j++){
                document.write(`⭐`);
            } 
            document.write(`<br>`) //换行
        }
    </script>

练习2:打印倒三角形星星

1648647671944.png

①:利用双重for循环来做

②:外层循环控制打印行,内层循环控制每行打印几个(列)

③:内层循环的个数跟第几行是一一对应的

 <script>
        for(i = 1; i <= 5; i++){
            for(j = 1; j <= i; j++){
                document.write(`⭐`);
            }
           document.write(`<br>`) 
        }
    </script>

练习3:打印九九乘法表

1648647937187.png

①:只需要把刚才倒三角形星星做改动

②: ★ 换成 1 x 1 = 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>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        span{
            display: inline-block;
            width: 100px;
            height: 35px;
            border: 1px solid #000;
            text-align: center;
            line-height: 35px;
        }
    </style>
</head>
<body>  
    <script>
        for(i = 1; i <= 9; i++){
            for(j = 1; j <= i; j++){
                document.write(`<span>${j}x${i}=${i*j}</span>`);
            }
           document.write(`<br>`) 
        }
    </script>
</body>
</html>