文章目录
1、程序的三大流程控制
顺序、分支(选择/条件)、循环
- 顺序:从上朝下执行的代码
- 选择:根据不同的情况,执行对应代码
- 循环:重复做一件事情
2、顺序结构
顺序结构是最简单的程序结构,它是由若干个依次执行的处理步骤组成的。(步骤有顺序:从上到下)
3、选择结构
在处理实际问题时,只有顺序结构是不够的,经常会遇到一些条件的判断, 流程根据条件是否成立有不同的流向。
3.1 if单分支
if(true){
//执行该语句
}
if(false){
//跳过该语句
}
3.2 if双分支
if(表达式){
//执行语句1
}else{
//执行语句2
}
【分析】当括号内的表达式结果成立,执行执行语句1,否则执行执行语句2
3.3 if多分支语句
【执行过程】从上往下,满足哪个条件就执行其相对应的语句,都不满足时, 执行最后的else的语句,只能进入其中之一。
3.4 嵌套if结构
if(表达式1){
if(表达式2){
if(表达式3){
}
}
}
注意:
1.嵌套if时,最好不要超过三层;
2.内层的每一对if...else代码 要缩进且对齐;
3.编写代码时,else要与最近的 if配对。
3.5 switch结构
【注】表达式的结果等于哪个case的常量,则执行其后的语句,执行完break就跳出switch结构,都不满足则执行default的语句。
break的作用:是跳出switch结构,如果没有break,则继续执行下面分支的的语句(而不进行判断)
注意:
- 注意switch的应用场景
- 注意case穿透,要加break语句。
- 每一个switch语句都需要加default语句。
- if后面的()不能省略,()后面不要加分号
- if分支中即使一句话也要把{}写上
- if嵌套不要超过三层
- Switch语句里把default分支一定要写上,防止在以后的维护中产生歧义
- 把执行概率更大(正常情况)放在前面(if, case)
- if else 一般来表示两个分支或者嵌套比较少的分支,如果分支多的话,优先使用switch
3.6 条件运算符
■ 唯一的三目运算符,要求有三个操作数。
执行过程:先求解表达式1,若为非0(真)则求解表达式2,若表达式1的值是0(假),则求解表达式3。
四、循环
4.1 while循环
while(表达式)
{
语句;
}
- 先判断表达式,表达式成立后执行语句。
- 循环条件中使用的变量(循环变量)需要经过初始化。
- 循环体中,应有结束循环的条件,否则会造成死循环。
- 循环体中可以写若干句合法的javaScript代码,包括if,也可以再套个循环语句。
用while循环求1~100之和
4.2 do-while循环
do
{
循环语句;
}while(表达式);
- 最后的分号不要忘记。
- 循环条件中使用的变量需要经过初始化。
- 循环体中,应有结束循环的条件,否则会造成死循环。
用do…while循环求1~100之和
4.3 while和do_while的区别
执行顺序的问题,while是先判断,do while,先执行循环体的代码,再判断。当条件第一次就不满足时,更能体现出区别。
在开发中,while用的情况多。如果while处理逻辑比较别扭时,就需要使用do while。
4.4 for循环
for(表达式1; 表达式2; 表达式3){
语句;
}
执行过程:
1、先求解表达式1(只求一次)
2、求解表达式2,若其值为真,则执行for语句中指定的内嵌语句,然后求解表达式3
3、再求解表达式2,返回第2步骤
4、求解表达式2若为假, 则结束循环,执行for循环外的语句
用for循环求1~100之和
【注】 三个表达式都可以省略,但分号不能省略
3个表达式都省略:例: for( ; ; ) 这是个死循环
4.5 循环嵌套
一个循环语句内又包含另一个完整的循环语句。循环可以互相嵌套,下面几种都是合法的形式。
4.6 break 关键字
break语句功能:
- 在switch语句中使流程跳出switch结构
- 在循环语句中使流程跳出整个循环
强调:
- 如果已执行break语句,就不会执行循环体中位于break后的语句。
- 在多层循环中,一个break语句只向外跳一层。
4.7 continue关键字
continue语句的功能:
一个循环执行多次,continue使本次循环结束,即跳过本次循环体中下面尚未执行的语句,接着进行下次是否执行循环的判断。
强调:
- continue语句只能用在循环里。
- 对于 while 和 do-while 循环,continue 语句执行之后的动作是条件判断;对于 for 循环,随后的动作是变量更新。
4.8 死循环
如何造死循环:
- while(true){……}; 常用
- do{…}while(true);
- for( ; ; )