流程控制语句

187 阅读7分钟

这是我的第一篇掘金博客,开启掘金写作之路。

流程控制

流程控制:就是控制代码按照一定的结构顺序来执行。

流程控制主要有三种结构,分别是顺序结构分支结构循环结构,代表三种代码执行的顺序。

一:分支结构

单分支语句
  • 单分支if(如果条件成立就进入到代码块里面)

    if(条件语句){
        执行语句;   //条件成立执行的代码语句
    }
    
双分支语句
  • 双分支if else (如果条件成立进入if的代码块,如果不成立进入到else代码块)

    if(条件语句){
        [成立]执行条件;
    }else{
        [不成立]执行条件;
    }
    
多分支 if else if
  • 多分支(如果可以书写多个判断条件,进入了一个条件就不会再进其他的条件了)

    if(条件1){
        执行相应代码;
    }else if(条件2){
        执行相应代码;
    }else if(条件3){
        执行相应代码;
    }else{
        //上述条件都不成立执行此处代码
    }
    
多分支 switch
  • switch:利用switch括号后的值跟后面case后的值做匹配,匹配上就执行case下面对应的语句,如果没匹配上就执行default(默认)里面的语句。

    switch (表达式) {   /*表达式一般是常量*/
        case value1:
            执行语句1;
            break;
        case value2:
            执行语句2;
            break;
        case value3:
            执行语句3;
            break;
        default:
            执行默认语句;
    }
    
    • switch表达式一般是常量;
    • 表达式的值和case的值执行的是全等匹配,必须数据类型一样才能匹配上;
    • case后面必须跟break才能退出,否则继续执行下去;
    • default根据需求来写,可以不写;

    月份多选择,小实例:

    //输入月份
    const readline = require('readline-sync');
    console.log('请输入1-12之间的月份');
    let yue = readline.question() - 0;
    switch (yue) {
        case 1:
        case 2:
        case 3:
            console.log('这是春天');
            break;
        case 4:
        case 5:
        case 6:
            console.log('这是夏天');
            break;
        case 7:
        case 8:
        case 9:
            console.log('这是秋天');
            break;
        case 10:
        case 11:
        case 12:
            console.log('这是冬天');
            break;
        default:
            console.log('你输入的月份错误');
    }
    
switch语句和if else if语句的区别
  • 一般情况下,他们两个语句可以相互替换
  • swich....case语句通常处理case为比较确定值的情况,而if....else....语句更加灵活,常常用于范围判断(大于,小于,等于某个范围)
  • switch语句进行条件判断后直接执行到程序的条件语句,效率更高。而if.....else语句有几种条件,就得判断多少次
  • 当分支比较少时,if.....else语句的执行效率比switch语句高
  • 当分支比较多时,switch语句的执行效率比较高,而且结构更清晰。

二:顺序结构

  • 顺序结构:按照代码的先后顺序,依次执行。

3.1.jpg

三:循环结构

  1. for循环
    for(初始化变量;条件表达式;操作表达式){
        //循环体
    }
    
    名称作用
    初始化变量通常被用于初始化一个计数器,该表达式可以使用 var 关键字声明新的变量,这个变量帮我们来记录次数。
    条件表达式用于确定每一次循环是否能被执行。如果结果是 true 就继续循环,否则退出循环。
    操作表达式用于确定每一次循环是否能被执行。如果结果是 true 就继续循环,否则退出循环。

    初始化变操作在整个for循环只会执行一次

    执行过程:

    • 执行操作表达式,此时第一轮结束。
    • 第二轮开始,直接去执行条件表达式(不再初始胡变量),如果为true,则去执行循环体语句,否则退出循环。
    • 继续执行操作表达式,第二轮结束。
    • 后续跟第二轮一致,直至条件表达式为假,结束整个for循环。

    断点调试:

    断点调试是指自己在程序的某一行设置一个断点,调试时,程序运行到这一行就会停住,然后你可以一步一步往下调试,调试过程中可以看各个变量当前的值,出错的化,调试到出错的代码立即显示错误,停下。断点调试可以帮助观察程序运行的过程。

    断点调试的流程

    • 浏览器中按F12--->sources--->找到需要调试的文件---->在程序的某一行设置断点。
    • watch:监视,通过watch可以监视变量的值得变化,非常的常用。
    • 按下F11,程序单步执行,让程序一行一行的执行,这个时候,观察watch中的变量的值的变化。

    for循环出重复相同的代码:

    const readline = require('readline-sync');
    //基本写法
    for(let i=0;i<=10;i++){
        console.log('霓虹呀');
    }
    //用户输入次数
    console.log('用户输入次数:');
    let sum = readline.question();
    for(let i=1;i<=sum;i++){
        console.log('哇哦哇哦哇哦');
    }
    

    for循环出不重复的代码:

    // for循环出不重复的代码:
    for(let i=0;i<=100;i++){
        console.log('今年'+i+'岁');
    }
    

    for双重循环:是指在一个循环语句中再定义一个循环语句的语法结构,例如在一个for循环语句中再嵌套一个for循环。

    for(外循环的初始;外循环的条件;外循环的操作表达式){
    	for(内循环的初始;内循环的条件;内循环的操作表达式){
    		需执行的代码;
    	}
    }
    
    • 内循环可以看作外层循环的循环体语句

    • 内层循环执行的顺序也要遵循for循环的执行顺序

    • 外层循环执行一次,内层循环要执行全部次数

      打印5行5列五角星

      let str='';
      for(let i=0;i<5;i++){           //外层循环负责打印5行
          for(let j=0;j<5;j++){     //内层循环负责一行打印5个星星
              str += '★';
          }
          //每次满5个星星就加一次换行
          str += '\n';
      }
      console.log(str);
      

    for循环小节

    • for循环可以重复执行某些相同的代码
    • for循环可以重复执行些许不同的代码
    • for循环可以重复执行某些操作,比如算数运算符加减法操作
    • 随着需求增加,双重for循环可以做更多,更好看的效果
    • 双重for循环,外层循环一次,内层for循环全部执行
    • for循环是循环条件和数字直接相关的循环
  2. while循环
    while(条件表达式){
    	//循环体代码
    }
    

    执行思路:

    • 先执行条件表达式,如果结果为true,则执行循环体代码;如果为false,则退出循环,执行后面代码
    • 执行循环体代码
    • 循环体代码执行完毕后,程序会继续判断执行条件表达式,如果条件仍为true,则会继续执行循环体,知道循环条件为false时,整个循环过程才会结束

    注意:

    使用while循环时一定要注意,它必须要有退出的条件,否则会成为死循环

  3. do while循环
    do{
    	//循环体代码-条件表达式为true时重复执行循环体代码
    }while(条件表达式);
    

    执行思路

    • 先执行一次循环体代码
    • 再执行条件表达式,如果结果为true,则继续执行循环体代码,如果为false,则退出循环,继续执行后面的代码

    注意:先再执行循环体,再判断,do.....while循环体语句至少会执行一次循环体代码

  4. continue,break

    continue:关键字用于立即跳出本次循环,继续下一次循环

    例如:吃5个包子,第3个有虫子,就扔掉第3个,继续吃第4个第5个包子,其代码实现如下:

    for (var i = 1; i <= 5; i++) {
         if (i == 3) {
             console.log('这个包子有虫子,扔掉');
             continue; // 跳出本次循环,跳出的是第3次循环 
          }
          console.log('我正在吃第' + i + '个包子呢');
     }
    

    break:关键字用于立即跳出整个循环(循环结束)

    例如:吃5个包子,吃到第3个发现里面有半个虫子,其余的不吃了,其代码实现如下:

    for (var i = 1; i <= 5; i++) {
       if (i == 3) {
           break; // 直接退出整个for 循环,跳到整个for下面的语句
       }
       console.log('我正在吃第' + i + '个包子呢');
     }
    

\