• module1-04-流程控制语句


    流程控制语句

    一、表达式和语句讲解

    1.1 表达式

    • 一个表达式可以产生一个值

    • 表达式会执行出一个结果,然后再参与其它程序

    1.2 语句

    • 语句可以理解为一个行为,如循环语句判断语句

    • 一般用;来分割语句,特殊结构(循环语句除外)

    1.3 流程控制语句

    • 通过一些特殊结构可以让js代码加载时,要么可以跳过一部不加载,或者可以循环加载一段代码

    • 如:条件废止语句、循环语句

    二、条件分支语句

    2.1 if语句

    • 最常用得条件分支语句

    • 结构

      • condetion expression:条件表达式,可以是任意的代码或者表达式,会转换为布尔类型

      • statement: 结构体,用{}包括一行到多行语句,要执行就都执行,要不执行就都不执行

      • if:如果

      • else:否则

    • 如果条件表达式为真true,执行结构体1,否则执行结构体2

    注意事项

    • 不写else,条件不成立,则直接跳过

    • 结构体如果是单行的话,可以省略{}不写

      • 建议在只有一个if没有else的时候使用

    • 执行完if,无论走哪个分直,结束后都要继续执行if语句后面的其它语句

    2.2 多分支if语句

    • 语法:if······else if······else if······else

    • 结构

    注意事项

    • ① 多分枝if语句中可以有多个else if语句,但是只能由一个else语句

    • ② 在任意一个分支满足条件,直接执行该分支下的结构体然后跳出if语句

    • ③ 因为后面的else if语句是在上一个if语句没有满足的情况下才进行判断的,所以可以化简后面else if表达式

    2.3 if语句嵌套

    • 在if语句的结构体里面,可以写另一组if语句

    • 满足外部if条件的时候才能执行内部嵌套的if语句

    • 优点:可以简化多分支if语句,比如一些else if中共同拥有的部分

    2.4 三元表达式

    • 又叫三元运算符必须由三个操作数参与的运算

    • 表达式1(boolean_expression) ? 表达式2(true_value) : 表达式3(false_value)

      • true_value是表达式为真的时候会触发的

      • false_value是表达式为假的时候会触发的

    优点

    • ① 二选一的情况下,三元表达式结构更加简单

    • ② 因为其式表达式参程序时必须运算出结果才能参与的,可以将二选一的结果赋值给一个变量

    2.5 switch语句

    • 又叫开关语句,允许一个程序求一个表达式的值,并且尝试去匹配表达式的值到一个case标签。如果匹配成功,就会执行相关的语句

    • 结构

      • switch:表示进入一个开关语句

      • 表达式:会将表达式的值去跟case后面的值进行全等匹配(===),值和数据类型也要相等

      • case:后面需要跟空格空开,匹配成功后会去执行后面所有语句(包括其它case的结构)

        • 格式为:case 值:()注意要加冒号

      • break:表示打断结构体,跳出程序,一般用于值匹配一个的话避免执行其它case的结构体的时候用break进行打断操作

      • default:没有case匹配的情况下,会执行default后面的语句,注意加冒号

    注意事项

    • default可以不写,相当于if语句没有else

    • break根据需求在case后面写,避免跳楼现象,可以利用不写break进行一些特殊的案例

      • 最好给case后面添加的式固定值

      • 不要 1 || 3 || 5 || 7 || 8 || 10 || 12

        • 这样最后的结果只会取到1

    2.6 总结

    • if语句:最常用的语句,所有的判断情况都可以用这个进行书写

    • 三元表达式:多用于给变量赋值根据二选一的情况

    • switch:多用于给一个表达式去匹配多种固定值可能性的情况

    三、循环语句

    3.1 for循环

    • for循环是一种前测试循环语句,在反复执行一段代码之前,都要先测试入口条件,如果条件为,可以继续循环,如果条件为,必须跳出循环不再执行

    • for循环是一种反复执行一段代码知道测试条件为假时停止

    • 语法

      • 这种解释只能涵盖for循环一部分特殊结构,不能表示所有for循环实现的情况

    • 执行过程

      • ① -> (②->③->④) * 循环次数 -> ⑤

    (1)注意事项1

    • 一定要有两个分号,即使那一部分为空,不然会导致语法错误

    • for循环后面的 {} 后面不用加分号

    • 避免出现死循环

      • for循环第二部分不写或为true或设置不合理的话会出现死循环

    • ③执行完之后才会执行④,③里面的代码可以任意编写

    • for嵌套for循环,必须先执行内层for循环之后才会继续外层for循环

    • 循环内变量是全局变量,必须避免起相同变量名,常用 i,j,k

    3.2 do while循环

    • 是一种后测试循环语句,即执行完再去判断入口条件

    • 结构

      • do {
           结构体;
        } while(条件表达式)
      • 先执行一次循环体,然后当条件表达式为真时可以继续循环

    注意事项

    • 如果循环需要变量参与,则必须在外面定义变量,否则会被重置

    • 循环变量自加写在{}内部

    • 避免出现死循环

    • 至少会执行一次循环体,即使条件第一次为假

    3.3 while循环

    • 前测试循环语句,执行前会执行入口条件(这点跟for类似)

    • 语法

      • while (条件表达式) {
           循环体;
        }
      • 条件为真,执行;条件为假,跳出循环

    注意事项

    • 跟do while类似,建议把循环内参与的变量在外部定义

    • 循环变量自加内部实现不建议写在条件表达式

    •  

    3.4 for while do while循环总结

    • 遇到必须执行一次先得使用do while

    • 先测试入口条件得可以选择for或while

    3.5 break语句

    • 已经达到目的,不需要更多循环

    • 可以用在for、do while、while

    • 可以根据一些条件设置break位置,执行到的话立刻停止执行,跳出循环

      • 可以节省代码的执行,优化代码

    案例

    • 判断1 - 50之间有没有能够被5整除的数字

    for (var i = 0; i < 50; i++) {
       if (i % 5 == 0) {
           console.log(i)
           break
      }
    }

    注意事项

    • break只能打断自己的循环,不会对外层循环进行打断

    • 终止外层循环

      • 外层循环添加上一个标签名,在内层循环的break关键字后面空格加上该标签即可

      • waiceng: for(var i = 0; i < 10; i++) {
           for (var j = 0; j < 3; i++) {
               if (j % 2 == 0) {
                   break waiceng // 打断2外层循环
              }
          }
        }
      •  

    3.6 continue

    • 跳过本次循环,进行下一次循环

    • 不同于break的是不是直接打断该循环

    案例

    • 找到 1- 30 之间,输出不是5的倍数的数字

    for (var i = 0; i < 30; i++) {
       if (i % 5 == 0) {
           continue
      }
       console.log(i)
    }

    注意事项

    • 跟break相似,也只能停止本次循环,使用标签名可以对外层循环进行操作

    • 标签名只有在循环之内有效,循环之外访问不到,具有块级作用域的特性

    3.7 穷举思想

    • 因为计算机没法智能的筛选所需要的数据

    • 穷举思想:一种解决问题的方法,将所有的需要数据所在范围内所有的数据都一一列举出来,再根据规律的条件对所有数据星星筛选

    制作方法

    • for循环遍历所有数据,再用if进行判断

    • 案例

      • 输出这个数的所有约束

      • var num = parseInt(prompt('请输入一个数字'))
        for (var i = 1; i <= num; i++) {
           if (num % i == 0) {
               console.log(i)
          }
        }
      •  

    3.8 累加器、累乘器

    • 使用变量应用在循环器里面

    (1)案例1 - 累加器

    • 求1 - 10之间所有数字的和

    var num = 0
    for (var i = 0; i <=10; i++) {
       num += i
    }
    console.log(num) // 1 + 2 + ... + 10

    (2)案例2 - 求一个数的阶乘

    var num = 1
    for (var i = 0; i < 10; i++) { // 求10的阶乘
    num *= 10 - i
    }
    console.log(num)
    • 累乘的初始值不能为0

    3.9 综合案例 --- 水仙花

    • 水仙花是一种特殊的三位数,特点是每个数位的三次方和,等于它本身

    var num1 = parseInt(prompt('请输入第一个数'))
    var num2 = parseInt(prompt('请输入第二个数'))
    for (var i = num1; i <= num2; i++) {
      const gewei = Math.pow(Math.floor(i % 10), 3)
      const shiwei = Math.pow(Math.floor(i / 10 % 10), 3)
      const baiwei = Math.pow(Math.floor(i / 100), 3)
      if (gewei + shiwei + baiwei == i) {
        console.log(i)
      }
    }
  • 相关阅读:
    前端
    Spring AOP知识点整理
    【转载】spring aop 面试考点
    【转载】MDC 是什么?
    【转载】在分布式项目中,每个服务器的日志从产生,到集中到一个统一日志平台的流程是什么,中间都有那些过程?
    【转载】门面日志如何自动发现日志组件
    【转载】ArrayList从源码看扩容实现
    【原创】Ajax实现方式
    【转载】servlet与springMVC的差别
    【转载】serlvet
  • 原文地址:https://www.cnblogs.com/lezaizhu/p/14088357.html
Copyright © 2020-2023  润新知