流程控制
流程控制的概念
在一个程序的执行过程中。每行代码的执行顺序如果不同,对于程序的执行结果是不一样的。一般情况下需要人为控制代码的执行过程以达到我们需要的效果
通过一定的手段控制代码的执行顺序
分类
- 顺序结构:标准的从上往下执行的顺序
- 分支结构:通过判断一定的条件选择所要执行的代码,而产生若干分支
- 循环结构:通过一定的条件约束部分代码重复执行若干次
顺序流程
最简单最基本的流程控制,默认的程序代码按照从上往下的顺序依次执行
分支流程
分支结构
代码由上往下执行的过程中,根据条件进行选择不同的代码执行路径,从而程序的执行结果也不一样
JS中提供了if语句,switch语句
IF语句
// 判断条件成立了(结果为true),则执行花括号内的程序代码
if(判断条件){
// 内部的执行代码没有数量限制,一般当执行代码只有一句代码时可以省略花括号,但是一般不建议
}
if(条件){
// 条件的结果为true时执行的语句
}else{
// 条件的结果为false时执行的语句
}
注意:if…else…分支结构就相当于之前的三元表达式,不同的是三元表达式只能处理比较简单的并且最终有一个返回值的一条语句
if(条件1){
// 条件1的结果为true时执行的语句
}else if(条件2){
// 条件2的结果为true时执行的语句
}else{
// 条件1和条件2都为false时执行的语句
}
遇到分支嵌套,标准都是从外往内进行逐个条件判断
Switch语句
switch(表达式){
case value1: // 如果表达式的结果是value1的话,执行语句1
// 语句1
break;
case value2: // 如果表达式的结果是value2的话,执行语句2
// 语句2
break;
default:
// 如果表达式的结果和上面的每一个value都不同则默认执行default下的语句
}
- switch:开关
- case:选项,这个选项是用来和switch内的表达式进行匹配的
- 关键字switch后面跟的可以是表达式,也可以是一个变量
- 关键字case后面跟一个数据值也可以是一个表达式,每个case最后面必须有一个冒号;
- 每个case的结束使用break结束,但是并非每一个case后面都要写这个break,前提是这个case不是switch中的最后的一个case
- break也可以被其他的逻辑控制进行替换
循环流程
for循环
for(初始化变量;条件表达式判断;操作表达式){
// 循环体
}
- 第一步执行初始化变量,可以写在for之后的小括号中,也可以写在for语句之前
- 第二步进行条件表达式判断,如果条件成立了(true)则执行循环体
- 第三步每次执行完一遍循环体则进行操作表达式的执行,操作表达式可以写在for之后的小括号中,也可以写在循环体中
- 第四步当执行完操作表达式之后再进行条件表达式判断,看是否为true以便决定是否再次循环
- 因此综上总结:初始化变量可以省略,操作表达式也可以省略(直接是死循环),条件表达式也可以省略(默认为true,直接是死循环)。
- 死循环是指一直进行循环,没有终止,一般在编程中尽量要避免死循环情况出现
for循环嵌套
for(初始化变量;条件表达式判断;操作表达式){
for(初始化变量;条件表达式判断;操作表达式){
// 循环体
}
}
- 内层循环可以看做外层循环的循环体
- 内层循环执行的顺序也要遵循for循环的执行顺序
- 外层循环执行一次,内存循环执行一圈
While循环
while(条件表达式判断){
//循环体
}
- 先执行条件表达式的判断,如果为true的话执行进行循环体,如果为false直接跳过这个循环模块
- 执行循环体代码
- 循环体代码执行完毕,程序会再次回到条件表达式进行判断结果,相当于回到第一步
- 所以在使用while循环时一定要注意,在循环体内部设置一个循环终止的程序,否则就会陷入死循环
do…while循环
do{
// 循环体
}while(条件表达式);
- 先进入do之后的花括号,执行一遍循环体
- 第二步进入while之后的条件表达式进行判断,如果判断结果成立为true的话再次回到第一步执行一遍循环体,如果不成立为false的话则循环结束
总结while循环和do…while循环的区别在于:while是先进行判断在进行执行循环体,如果第一次判断不成立则直接跳过循环。而do…while先执行一遍循环体再进行判断,根据判断结果决定是否继续循环,循环体无论怎样都会执行一遍
流程控制关键字
简介
通过某些关键字对循环结构或者分支结果进行控制的特殊关键字。
三个关键字
- break:关键字用于立刻跳出当前的整个循环
- continue:关键字用于立刻跳出本次循环,继续进入下一次循环
- return:关键字用于立刻结束整个模块