美文网首页
流程控制语句

流程控制语句

作者: amanohina | 来源:发表于2020-11-26 14:47 被阅读0次

表达式

  • 一个表达式可以产生一个值,有可能是运算、函数调用、有可能是字面量。表达式可以放在任何需要值的地方。
  • 特点:表达式会先执行出一个结果,然后再参与其他程序。

语句

  • 语句可以理解为一个行为,循环语句和判断语句就是典型的语句。一个程序有很多个语句组成,一般情况下分号 ; 分割一个一个的语句。
  • 语句可以认为是给计算机的一个指令,执行这段代码。
  • 一般语句以分号结束,特殊的结构除外。

流程控制语句

  • 流程控制语句:通过一些特殊结构可以让 js 代码加载时,要么可以跳过一部分不加载,或者可以循环加载一段代码。
  • 包括:条件分支语句、循环语句。

条件分支语句

if语句

  • if语句是最常用的条件分支语句,作用就是通过某个特定的判断条件,决定走哪条分支的代码
    -结构:
if (condition expression) {
    statement1;
} else {
    statement2;
}
  • condition expression:条件表达式,任意的代码或者表达式,参与程序过程都会强制得到一个布尔值执行结果。表达式,js中遇到的任何表达式都会计算出一个结果然后才能继续执行程序

  • statement:结构体,js中可以使用{}包含一行到多行的语句,这些语句构成了一个结构体,结构体的语句要执行就都会执行,取决于condition expression的结果

  • if:如果

  • else:否则

  • 上述代码总结:如果条件表达式是true,执行1,否则执行2

注意事项

  • if 语句可以实现选择的功能,两个分支可以选择一个执行,不会都执行。
  • if 语句可以不写 else 分支,表示条件成立就执行后面的结构体,如果条件不成立,直接跳出 if 语句不执行。
  • if 语句后面的机构体如果是单行语句组成,可以省略 {} 不写。不建议省略大括号,容易出现程序错误。
  • if 语句能够控制自己内部的流程,但是不论走哪个分支,结束后都要继续执行 if 语句后面的其他语句,叫做殊途同归现象。

多分支if语句

  • 包含多个判断条件,对应多个分支。
  • 语法:if……else if……else if……else……
  • 结构:
    if (条件1) {
        满足条件1,执行的结构体
    } else if (条件2) {
        不满足条件1,满足条件2,执行的结构体
    } else if (条件3) {
        不满足条件1/2,满足条件3,执行的结构体
    } else {
        不满足前面所有条件,执行的结构体
    }

注意事项

①多分支 if 语句中可以有多个 else if 的分支,但是 else 分支只能有一个,必须出现在最后,作为备用的选项,而且 else 也可以省略不写,表示前面条件如果都不满足,直接跳出不走任何分支。
②多分支 if 语句有跳楼现象:条件从上往下依次验证,如果满足了某个条件,会立即执行后面的结构体,执行完之后,不会再往后验证其他的条件了,而是从这一层直接跳楼跳出if语句,这就是跳楼现象。

if语句嵌套

  • if语句内部嵌套了if语句
  • 如果想执行内部 if 语句的某个分支,必须满足外部 if 语句的条件,同时还要满足内部 if 语句的某个条件。
  • 优点:可以简化多分支 if 语句。
    案例:男女退休判断
 // 外层的 if 语句只判断性别
    // 内层的 if 语句只判断年龄
    if (sex === "男") {
      // 男性,年龄需要大于60岁
      if (age >= 60) {
        alert("恭喜你,可以享受人生了");
      } else {
        alert("忍忍吧,还要坚持坚持");
      }
    } else {
      // 女性,年龄需要大于55岁
      if (age >= 55) {
        alert("恭喜你,幸福人生开始了");
      } else {
        alert("太难了,还得继续坚持");
      }
    }

三元表达式

  • 又名三元运算符,必须有三个操作数参与的运算
  • 操作符:
    ? :
  • 表达式:参与js程序的时候,必须计算出来表达式结果,才能参与后续的程序
  • 三元表达式具备了一些选择的效果,所以也是一种条件分支语句

语法:

  • boolean_expression ? true_value : false_value;
  • boolean_expression:布尔表达式,表达式在参与三元运算中必须求得一个布尔类型的值,要么是 true,要么是 false,结果作为判断依据,判断到底去:前面的值还是后面的值。
  • true_value:布尔表达式的值为真时,三元表达式的结果。
  • false_value:布尔表达式的值为假时,三元表达式的结果。
  • 作用:根据布尔表达式的结果,如果为真,三元表达式结果就是真值,如果为假,三元表达式结果就是假值
    var a = 4;
    var b = a >= 5 ? 1 : 0;
    console.log(b);

运行结果:0

优点

  • 虽然if语句可以模拟三元表达式,但是三元表达式有自己的优点:
    ①二选一的情况下,三元表达式结构更加简单。
    ②三元表达式作为一个表达式参与程序时必须运算出结果才能参与,可以利用这个特点,将二选一结果赋值给一个变量。
  • 遇到给一个变量根据条件二选一赋值的情况,可以使用三元表达式。

switch语句

  • 开关语句允许一个程序求一个表达式的值,并且尝试去匹配表达式的值到一个case标签,匹配成功,这个程序执行相关的语句
  • 语法:
switch (表达式) {
    case 值1:
        结构体1;
        break;
    case 值2:
        结构体2;
        break;
    ……
    default: 
        结构体n;
        break;
     }

  • switch:关键字表示开始进入一个开关语句
  • 表达式:会求出一个具体的值,用于去匹配case后面的值,匹配相等的条件不只是值相等,数据类型也要相等
  • case:示例,关键字后面要有空格,书写匹配的值
  • case后面的结构体,每个case匹配成功之后要有执行的语句
  • break:打断结构体,直接跳出,模拟跳楼现象
  • default:相等于if的else,否则的情况,case都不匹配的话,就执行default后面的语句

switch语句运行机制

  • switch 语句首先会将小括号内的表达式计算出一个结果,用结果去匹配结构体内部的 case;
  • 从上往下进行匹配,如果匹配成功,会立即执行这个 case 后面的语句,直到遇到一个 break 跳出整个 switch 语句;
  • 如果前面的 case 没有匹配成功,会跳过 case 之间的语句,去匹配下一个 case,直到匹配成功,如果都不成功就执行 default 后面的语句。

注意事项

  • default可以不写,等于if里没有else,同理
  • break关键字,每个case后面都要写,不写的话就不会跳出结构体,会一直运行到直至遇到下一个break
  • 可以用break不写的情况制作一些特殊的案例

条件分支语句的总结

  • 三种语句的情景
  • if:所有的判断条件都能书写
  • 三元表达式:多用于给变量赋值的二选一情况
  • switch:多用于给一个表达式去匹配多种固定值可能性的情况

循环语句

for循环

  • for 循环是一种前测试循环语句,在反复执行一段代码之前,都要先测试入口条件,如果条件为真,可以继续循环,如果条件为假,必须跳出循环不再执行。
  • or 循环是一种反复执行一段代码直到测试条件为假时停止。
 for(定义循环变量;变量的最大值或最小值;步长){
         循环体;
    }

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


for循环注意事项

  • 小括号内部必须有两个分号。
  • for 循环 {} 后面不需要加分号。
  • 如果 ② 位置语句不写,相当于没有设置入口条件,或者条件永远为真,没法限制什么时候停止循环了,出现死循环。
  • ③ 位置是循环的结构体,每次进入循环都要执行完后,才能执行语句 ④,③ 位置的语句是可以人为自定义的,甚至可以书写 if 语句。
  • for 循环嵌套 if 语句:表示既要能够执行循环,还要满足 if 语句的条件。
  • for 循环嵌套 for 循环:外层循环执行一次,内层循环作为外层 ③ 位置的结构体,必须执行完所有的内层循环,才能进入外层循环下一次的 ④。
  • 循环内的变量是全局变量,必须避免循环嵌套时起相同的变量名,内层和外层变量名必须不同,常用的变量名 i,j,k。

do while循环

do while 循环是一种后测试循环语句,会先执行一次结构体,执行完后才会去判断入口条件,如果条件为
真能够继续下一次循环,如果条件为假跳出循环。

  • 语法:
 do{
            结构体;
        }while(条件表达式);

  • do:做什么。后面是每次循环的循环体。
  • while:当……时候。
  • 先执行一次循环体,然后当条件表达式为真时可以继续循环。

注意事项

  • 如果循环中需要循环变量参与,循环变量必须定义在循环外面,否则会被重置。
  • 循环变量自加的过程需要写在 {} 循环体内部。
  • 如果将循环变量写在结构体内,i的初始值每次都会被重置,容易出现死循环。
  • 变量自加过程写在输出语句前面和后面,结果是不同的。
  • do while 循环即便条件第一次测试就为假,也会执行一次结构体。
    至少会执行一次循环体。

while循环

  • while 循环是一种前测试循环语句,在执行循环体之前都要测试入口条件,条件为真继续执行,条件为假直接跳出循环。

语法

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

当条件表达式为真时,执行循环体,如果为假,跳出循环。

注意事项

  • 如果需要循环变量参与,必须定义在循环外部,避免被重置。
  • 循环变量自加的过程写在循环体内部。

总结

  • 遇到必须要执行一次循环体的循环,使用do while
  • 先测试入口条件的循环,选择for或者while

break语句

  • break语句可以立即停止当前的for、do while、while循环
  • 根据一些条件设置break位置,直到循环能够执行到break语句立即停止执行,跳出循环

注意事项

  • break 如果没有特殊指示,只能停止自己所在的那一层循环,并不能终止外部循环。
  • 如果想停止外层循环,可以给外层循环添加一个标签名 label,在内层循环的 break 关键字后面空格加一个 label 名。


continue语句

  • 遇到continue表示当前的一次循环数据不是想得到的,立即停止当前循环进行下一次循环

注意事项

  • 要根据特殊条件设置 continue 的位置。
  • continue 如果没有特殊指示只能进入自己的下一次循环,不能立即停止外层循环的这一次进入下一次。
  • 控制外层循环的方式与 break 一样,都是添加外层的标签名。


总结

break和continue这两个语句的出现可以帮助我们大量的优化代码,减少计算次数

穷举思想

  • 实际案例中,可能需要找到一些有规律的数据,但是计算机没办法自动智能筛选所要的数据,只能程序员自己书写一段代码,让计算机根据代码去进行筛选。
  • 穷举思想:是一种解决问题的方法,将所有的需要数据所在的范围内所有的数据都一一列举出来,再根据规律的条件对所有这些数据进行筛选,这种方式就是穷举法。

制作方法:

  • for循环:外层使用for循环进行一一列举
  • if语句:内层用if判断,筛选数据,有满足的就操作数据,不满足的跳过看下一次循环数据
    案例:
// 让用户随意输入一个正数,给用户输出这个数字所有的约数
    var n = parseInt(prompt("请输入一个正整数"));
    // 穷举思想,外层一一列举可能性,内层判断
    for (var i = 1 ; i <= n ; i++) {
      // 内层判断 i 是否是 n 的约数
      if (n % i == 0) {
        console.log(i + "是" + n + "的一个约数");
      }
    }

累加器

  • 有时候需要的不是每个数据是什么,需要得到所有数据的加和,必须想办法将所有的数据的和存起来,就用到了累加器。
  • 累加器本质就是变量。
  • 实现累加的效果,就是利用循环,每次循环就将新的数据加到原始的变量中去,赋值过程是一个加等于赋值。
    案例:
//定义累加器
var sum = 0;
for(var i = 1 ; i <= 10 ; i ++){
    sum+=i;
}
console.log(sum);

注意事项

  • 累加器要定义在循环的外面,定义在内部的话会被重置,不能实现累加功能
  • 初值必须设置,而且应该设置为0,不影响累加的效果
  • 用最终的累加效果的时候,必须在for循环结束的外面,写在内部,循环还没有结束

累乘器

  • 与累加器几乎一致
//定义累乘器
var mul= 0;
for(var i = 1 ; i <= 10 ; i ++){
    mul*=i;
}
console.log(mul);

注意事项

  • 累乘器必须定义在循环外部前面。
  • 累乘器的初始值必须是 1,1 乘以任何数都等于本身。
  • 累乘器最终结果必须在 for 循环结束后使用。

实际案例:水仙花数

  • 水仙花数:个十百位的三次方相加等于本身的数
    思想:使用循环进行穷举法列举出所有的三位数,分别计算出个十百位的数字,然后定义一个变量把相加得到的值赋值给它,再进行判断
// 穷举思想,列举所有的三位数
    for (var i = 100 ; i <= 999 ; i++) {
      // i 的三个数位的三次方的和,等于 i 自己
      // 找到个位、十位、百位的数字
      var ge = i % 10,
          shi = parseInt(i / 10) % 10,
          bai = parseInt(i / 100);
      // 计算三个数位的三次方的和
      var sum = ge * ge * ge + shi * shi * shi + bai * bai * bai ;
      // 判断 sum 是否等于 i 自己,如果是,就是水仙花数,需要输出
      if (sum == i) {
        console.log(i);
      }
    }
答案

相关文章

  • JavaScript-流程控制语句

    一、if流程控制语句 二、switch流程控制语句 三、流程控制语句

  • 【骚全带你学Java---八、流程控制语句】

    java的流程控制语句包含条件语句和循环语句 一.什么是流程控制语句? ·流程控制语句:可以控制程序的执行流程。 ...

  • 03学习Python

    学习记录,欢迎指出错误 流程控制 Python中流程控制语句有 if语句 for语句 while语句 if语句 在...

  • 2018-12-11

    流程控制 流程控制语句:--条件判断语句--条件分支语句--循环语句 条件判断语句(if语句) 语法:if(条件表...

  • Python基础重构-1.3流程控制

    流程控制语句 流程控制语句用来实现对程序流程的选择、循环和返回等进行控制,Python中主要的流程控制包括if(判...

  • Shell流程控制

    Shell流程控制 简单流程控制语句 单分支if语句 语法格式 双分支if语句 语法格式 多分支if语句 语法格式...

  • # shell流程控制语句

    shell流程控制语句 任何编程语言都离不开流程控制语句,其实编程基本上就是掌握了流程控制语句,然后加上函数(或者...

  • 流程控制语句、条件判断语句、多重条件判断语句、数组、数组、数组常

    流程控制语句:通过流程控制语句可以控制程序执行流程,使程序可以根据一定的条件来选择执行 语句分类: 1.条...

  • Python程序结构

    2018年6月27日笔记 python流程控制 1.python流程控制语句结构 4种流程控制语句结构:ifif ...

  • day2.5_流程控制

    程序流程控制 流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。其流程...

网友评论

      本文标题:流程控制语句

      本文链接:https://www.haomeiwen.com/subject/tzuiiktx.html