• JavaScript课程——Day03(流程控制、顺序结构、分支语句、循环)


    1、流程控制

    所谓流程控制就是指程序怎么执行或者说程序执行的顺序

    • 顺序结构
    • 条件选择结构(分支语句):包括if-else以及switch
    • 循环结构:包括 for 循环,while,do-while,for-in等
    • 其他语句:break和continue

    2、顺序结构

    顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句即可,它的执行顺序是自上而下,依次执行的

    3、分支语句

      3.1、if

    if (条件1) {
         条件1为真执行
    }
    if (条件) {
        如果条件为真,执行
    } else {
        如果条件为假,执行
    }
    if (条件1) {
        条件1为真执行
    } else if (条件2) {
        条件2为真执行
    } else if (条件3) {
        条件3为真执行
    } else {
        以上条件都不为真执行
    }
    console.log(new Date().getDay()); // 0--6,代表周日--周六
    
    var week = new Date().getDay();
    if (week === 0) {
        console.log('今天周日');
    } else if (week === 1) {
        console.log('今天周一');
    } else if (week === 2) {
        console.log('今天周二');
    } else if (week === 3) {
        console.log('今天周三');
    } else if (week === 4) {
        console.log('今天周四');
    } else if (week === 5) {
        console.log('今天周五');
    } else if (week === 6) {
        console.log('今天周六');
    }
     var txt = document.getElementsByTagName('input')[0];
     var btn = document.getElementsByTagName('button')[0];
    
            btn.onclick = function () {
                var val = txt.value; // 取得分数
    
                if (val < 0 || val > 100) {
                    // 排除不合法的
                    alert('哥们,请输入正确的分数')
                } else {
                    // 合法,等级划分
                    if (val < 60) {
                        alert('哥们,不太行啊');
                    } else if (val >= 60 && val < 70) {
                        alert('小老弟,及格了');
                    } else if (val >= 70 && val < 80) {
                        alert('一般');
                    } else if (val >= 80 && val < 90) {
                        alert('良好');
                    } else if (val >= 90 && val < 100) {
                        alert('优秀');
                    } else {
                        alert('满分');
                    }
                }
            }

      3.2、switch

      switch一般用于假设的个数有限,并且是同等级的关系,相对于if来说,结构更清晰。

    switch (变量) {
        case 表达式1:
            变量 全等于 表达式1 执行这里;
            break;
        case 表达式2:
            变量 全等于 表达式2 执行这里;
            break;
        case 表达式3:
            变量 全等于 表达式3 执行这里;
            break;
        ......
        default:
            以上都不成立,执行这里;
    }
    var week = new Date().getDay(); // 0--6
            switch (week) {
                case 0:
                    console.log('星期日');
                    break;
                case 1:
                    console.log('星期一');
                    break;
                case 2:
                    console.log('星期二');
                    break;
                case 3:
                    console.log('星期三');
                    break;
                case 4:
                    console.log('星期四');
                    break;
                case 5:
                    console.log('星期五');
                    break;
                case 6:
                    console.log('星期六');
                    break;
                default:
                    console.log('日期错误');
            }

      3.3、if和switch的区别

    • 一般情况下,这两个语句是可以相互替换的
    • switch语句通常处理case为比较确定值的情况,而if…else…if语句更加灵活,常用于范围判断(大于、等于某个范围)
    • switch语句进行条件判断后直接执行到程序的条件语句,效率更高。而if…else语句有几种条件,就得判断多少次。因此当分支比较多时,switch语句的执行效率比较高,而且结构更清晰。

    4、循环

    作用:让一段特定的代码执行指定的次数

      4.1、for

    for (1初始循环变量; 2判断条件(如果条件为真循环,否则停止循环); 4更新循环变量) {
        3执行代码
    }
    // 打印1--3
    // console.log(1);
    // console.log(2);
    // console.log(3);
    for (var i = 1; i <= 3; i++) {
         console.log(i);
    }
    // 第一轮  1234:  1、var i = 1;   2、1<=3;  3、console.log(1);  4、i++
    // 第二轮  234:   2、2<=3;   3、console.log(2);   4、i++
    // 第三轮  234:   2、3<=3;   3、console.log(3);   4、i++
    // 第四轮  2:     2、4<=3;
    // 打印1--100
    // for (var i = 1; i <= 100; i++) {
    //     console.log(i);
    // }
    
    // 打印100--1
    // for (var i = 100; i >= 1; i--) {
    //     console.log(i);
    // }
    
    // --------------------------
    // 求1--100所有数的和
    // 1+2+3+4+...+100=5050
    // var num = 0; // 仓库
    // for (var i = 1; i <= 100; i++) {
    //     num += i;
    // }
    // console.log(num);
    
    // --------------------
    // 求1--100所有奇数的和
    // var num = 0;
    // for (var i = 1; i <= 100; i++) {
    //     if (i % 2 === 1) {
    //         num += i;
    //     }
    // }
    // console.log(num);
    
    var num = 0;
    for (var i = 1; i <= 100; i += 2) {
        num += i;
    }
    console.log(num);

        4.1.1、循环操作标签案例

    <ul>
            <li>吃饭</li>
            <li>睡觉</li>
            <li>打豆豆</li>
            <li>张新昊</li>
            <li>老王</li>
    </ul>
    
    <script>
            // 给每个li添加点击事件
            var li = document.getElementsByTagName('li');
    
            console.log(li);
            // li[0].onclick = function () {
            //     console.log(1);
            // }
            // li[1].onclick = function () {
            //     console.log(1);
            // }
            // li[2].onclick = function () {
            //     console.log(1);
            // }
    
            for (var i = 0; i < li.length; i++) {
                // 添加背景
                li[i].style.backgroundColor = 'pink';
    
                // 添加事件
                li[i].onclick = function () {
                    console.log('点了我');
                }
            }
    </script>

        

        4.1.2、循环创建标签

    // 循环创建100个p
    // 并隔行变色
            window.onload = function () {
                var body = document.getElementsByTagName('body')[0];
    
                for (var i = 1; i <= 100; i++) {
                    if (i % 2 === 1) {
                        // 奇数行
                        body.innerHTML += '<p style="background: red;">我是第' + i + '个p标签</p>';
                    } else {
                        // 偶数行
                        body.innerHTML += '<p style="background: yellow;">我是第' + i + '个p标签</p>';
                    }
                }
            }

        

        4.1.3、循环套循环——乘法口诀表

    // 外层循环管轮数,里面的循环管每一轮的打印
    // for (var i = 1; i <= 3; i++) {
    //     for (var j = 1; j <= 5; j++) {
    //         console.log(j);
    //     }
    // }
    
    
    // 乘法口决表
    window.onload = function () {
         var body = document.body;
    
          for (var i = 1; i <= 9; i++) {
              for (var j = 1; j <= i; j++) {
                 body.innerHTML += j + '*' + i + '=' + i * j + '&nbsp;&nbsp;';
             }
              body.innerHTML += '<br>';
          }
    }

      4.2、while

    1初始循环变量
    while (2条件) {
        3执行代码
        4更新循环变量
    }
    // 打印1--10
    var i = 1;
    while (i <= 10) {
        console.log(i);
        i++;
    }

      for和while的区别:

      两者在功能上是可以互换的。for适合能明确循环次数的循环,while适合只有条件判断的循环。

    // 小王有100块钱,每天用一半,当用到1块钱时停止,可以用几天
    
    var money = 100; // 多少钱
    var count = 0; // 天数
    while (money > 1) {
        money = money / 2;
        count++;
        console.log('今天第' + count + '天,还有' + money + '钱');
    }

      4.3、do-while

      特点:不论条件是否满足,至少都能执行一次

    1初始循环变量
    do {
        2执行代码
        3更新循环变量
    } while (4条件)
    // ----------------------------
    // 1--10
    // var i = 1;
    // do {
    //     console.log(i);
    //     i++;
    // } while (i <= 10);
    
    
    var i = 100;
    do {
           console.log(i);
            i++;
    } while (i <= 10);

      4.4、break和continue

    • break与continue都是在循环中,终止循环的操作
    • break是结束循环,后面的循环都不再执行
    • continue是结束本次循环,即本次循环中continue以后代码都不再执行,直接执行下一次循环
    for (var i = 1; i <= 10; i++) {
           if (i === 5) {
               // break; // 结束循环,后面的循环都不再执行。
               continue; // 是结束本次循环,即本次循环中 continue 以后代码都不再执行,直接执行下一次循环。
           }
           console.log(i);
    }
    // 打印1--100之间除了35 45 55之外所有5的倍数的和
    var num = 0;
    for (var i = 5; i <= 100; i += 5) {
          if (i === 35 || i === 45 || i === 55) {
              continue;
          }
           num += i;
    }
    console.log(num);
  • 相关阅读:
    数据库
    php
    123
    es5新增
    正则表达式
    cookie
    Event事件下
    事件对象
    dva框架的下拉菜单的父子关系
    dva框架的table表格---删除
  • 原文地址:https://www.cnblogs.com/miaochaofan/p/14686667.html
Copyright © 2020-2023  润新知