JavaScript基础 第八章 流程控制

八、流程控制

8.1 流程控制概念

在一个程序执行的过程中,各条代码的执行顺序对程序的结果是有直接影响的。很多时候我们要通过控制代码的执行顺序来实现我们要完成的功能。

简单理解:流程控制就是来控制代码按照一定结构顺序来执行

流程控制主要有三种结构,分别是顺序结构分支结构循环结构,代表三种代码执行的顺序。
在这里插入图片描述

8.2 顺序流程控制

顺序结构是程序中最简单、最基本的流程控制,它没有特定的语法结构,程序会按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。

8.3 分支流程控制

分支结构:由上到下执行代码的过程中,根据不同的条件,执行不同的路径代码(执行代码多选一的过程),从而得到不同的结果

JS 语言提供了两种分支结构语句:if 语句、switch 语句。

语句可以理解为一个行为,循环语句和分支语句就是典型的语句。一个程序由很多个语句组成,一般情况下,会分割成一个一个的语句。

8.3.1 if 语句
  1. 单 if 语句

语法

if (条件表达式) {
    // 条件成立执行的代码语句
}

执行流程在这里插入图片描述

  1. if else 语句(双分支语句)

语法

// 条件成立  执行 if 里面代码,否则执行else 里面的代码
if (条件表达式) {
    // [如果] 条件成立执行的代码
} else {
    // [否则] 执行的代码
}

执行流程 在这里插入图片描述

  1. if else if 语句(多分支语句)

语法

// 适合于检查多重条件。
if (条件表达式1) {
    语句1} else if (条件表达式2)  {
    语句2} else if (条件表达式3)  {
   语句3....
} else {
    // 上述条件都不成立执行此处代码
}

执行流程
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GoSpBmis-1635513589807)(JavaScript%E5%9F%BA%E7%A1%80.assets/%E5%9B%BE%E7%89%8716%20(2)].png)

8.3.2 三元表达式

语法

表达式1 ? 表达式2 : 表达式3;

执行思路

  • 如果表达式1为 true ,则返回表达式2的值,如果表达式1为 false,则返回表达式3的值

简单理解: 就类似于 if else (双分支) 的简写

8.3.3 switch分支流程控制

switch 语句也是多分支语句,它用于基于不同的条件来执行不同的代码。当要针对变量设置一系列的特定值的选项时,就可以使用 switch

语法

switch( 表达式 ){ 
    case value1:
        // 表达式 等于 value1 时要执行的代码
        break;
    case value2:
        // 表达式 等于 value2 时要执行的代码
        break;
    default:
        // 表达式 不等于任何一个 value 时要执行的代码
}

说明

  • switch :开关 转换 , case : 选项
  • 关键字 switch 后面括号内可以是表达式或值, 通常是一个变量
  • 关键字 case , 后跟一个选项的表达式或值,后面跟一个冒号
  • 关键字 break ,遇到 break 会立即退出 switch 语句

执行过程

  1. switch 表达式的值会与结构中的 case 的值做比较
  2. 如果存在匹配全等(===) ,则与该 case 关联的代码块会被执行,并在遇到 break 时停止,整个 switch 语句代码执行结束
  3. 如果所有的 case 的值都和表达式的值不匹配,则执行 default 里的代码

⚠ 注意: 执行case 里面的语句时,如果没有break,则继续执行下一个case里面的语句。

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

8.4 循环流程控制

8.4.1 for 循环

语法

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

执行过程

  1. 初始化变量,初始化操作在整个 for 循环只会执行一次。

  2. 执行条件表达式,如果为true,则执行循环体语句,否则退出循环,循环结束。

  3. 执行操作表达式,此时第一轮结束。

  4. 第二轮开始,直接去执行条件表达式(不再初始化变量),如果为 true ,则去执行循环体语句,否则退出循环。

  5. 继续执行操作表达式,第二轮结束。

  6. 后续跟第二轮一致,直至条件表达式为假,结束整个 for 循环。

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

断点调试的流程

  1. 浏览器中按 F12–> sources -->找到需要调试的文件–>在程序的某一行设置断点

  2. Watch: 监视,通过watch可以监视变量的值的变化,非常的常用。

  3. 刷新页面

  4. 摁下F11,程序单步执行,让程序一行一行的执行,这个时候,观察watch中变量的值的变化。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dVTRZboz-1635513589808)(JavaScript%E5%9F%BA%E7%A1%80.assets/image-20211027190808103.png)]

示例

  • for 循环重复相同的代码

    //输出10次早安
    for(var i = 1; i <= 10; i++){
        console.log('早安');
    }
    
    // 用户输入循环次数
    var num = prompt('请输入次数:')for ( var i = 1 ; i <= num; i++) {
        console.log('早安');
    } 
    
  • for 循环重复不相同的代码

    例如,求输出1到100岁:

    for (var i = 1; i <= 100; i++) {
          console.log('这个人今年' + i + '岁了');
    }
    
  • 求输出1到100岁,并提示出生、死亡

    // for 里面是可以添加其他语句的 
    for (var i = 1; i <= 100; i++) {
     if (i == 1) {
        console.log('这个人今年1岁了, 它出生了');
     } else if (i == 100) {
        console.log('这个人今年100岁了,它死了');
      } else {
           console.log('这个人今年' + i + '岁了');
      }
    }
    

    for循环因为有了计数器的存在,还可以重复的执行某些操作,比如做一些算术运算。

8.4.2 双重for循环

循环嵌套是指在一个循环语句中再定义一个循环语句的语法结构,例如在for循环语句中,可以再嵌套一个for 循环,这样的 for 循环语句我们称之为双重for循环

双重 for 循环语法

for (外循环的初始; 外循环的条件; 外循环的操作表达式) {
    for (内循环的初始; 内循环的条件; 内循环的操作表达式) {  
       需执行的代码;
   }
}
  • 内层循环可以看做外层循环的循环体语句
  • 内层循环执行的顺序也要遵循 for 循环的执行顺序
  • 外层循环执行一次,内层循环要执行全部次数

示例:打印五行五列星星

核心逻辑

1.内层循环负责一行打印五个星星

2.外层循环负责打印五行

var star = '';
for (var j = 1; j <= 5; j++) {
    for (var i = 1; i <= 5; i++) {
      star += '☆'
    }
    // 每次满 5个星星 就 加一次换行
    star += '\n'
}
console.log(star);
8.4.3 while循环

语法

while (条件表达式) {
    // 循环体代码 
}

执行思路

  1. 先执行条件表达式,如果结果为 true,则执行循环体代码;如果为 false,则退出循环,执行后面代码

  2. 执行循环体代码

  3. 循环体代码执行完毕后,程序会继续判断执行条件表达式,如条件仍为true,则会继续执行循环体,直到循环条件为 false 时,整个循环过程才会结束

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

8.4.4 do-while循环

语法

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

执行思路

  1. 先执行一次循环体代码

  2. 再执行条件表达式,如果结果为 true,则继续执行循环体代码,如果为 false,则退出循环,继续执行后面代码

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

8.4.5 continue

continue 关键字用于立即跳出本次循环,继续下一次循环(本次循环体中 continue 之后的代码就会少执行一次)。

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

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

运行结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TVyte8U0-1635513589810)(JavaScript%E5%9F%BA%E7%A1%80.assets/%E5%9B%BE%E7%89%871.png)]

8.4.6 break

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

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

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

运行结果
1

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值