JS 入门章节目录
第七章:程序的三种结构
文章の目录
正文
程序的三种结构
- 顺序结构
- 分支结构
- 循环结构
顺序结构
顺序结构是最简单的程序结构,程序中的各个操作是按照他们在源代码中的排列顺序,自上而下,依次执行。
分支结构
程序在运行过程中,根据不同的条件,选择执行某些语句。
if 语句
if
语法:
if(条件表达式){
// 语句块;
}
流程:
- 判断条件表达式的结果。
- 如果结果为 true,则执行语句块中的内容;如果结果为 false,则不执行语句块中的内容。
注:
- if 语句条件位置处,必须为 Boolean 类型的值/表达式/变量。如果条件不是 Boolean 类型的话,JS 会自动进行转换。
- 以下情况,if 都会认为是 false:if(0/0.0/""/null/undefined/NaN){}
- 除以上情况外,一律为真。
- if 语句块的 { },可以被省略。如果省略 { },那么 if 只控制它下面的第一条语句。
if - else
语法:
if(条件){
// 语句块1;
}else{
// 语句块2;
}
流程:
- 如果条件为真的话,则执行语句块1中的操作。
- 否则则执行语句块2中的操作。
else if
语法:
if(条件1){
// 语句块1;
}else if(条件2){
// 语句块2;
}else if(条件3){
// 语句块3;
}
...
else{
// 语句块n;
}
流程:
- 如果条件1为真,则执行语句块1中的操作。
- 如果条件1为假,则判断条件2。如果条件2为真,则执行语句块2中的操作。
- 如果条件2为假,则判断条件3。如果条件3为真,则执行语句块3中的操作。
- ... ...
- 如果所有条件都为假,则执行语句块n中的操作。
注:
- 最后的 else 模块,可以选择性添加。
switch 语句
switch 语句是一种特殊的分支结构,可以根据一个变量或表达式的不同取值,从不同的程序入口开始执行。
语法:
switch(变量或表达式){
case 值1:
语句1.1;
语句1.2;
case 值2:
语句2;
... ...
default:
语句n;
}
流程:
- 计算变量或表达式的值。
- 将计算出来的值与 case 后的值做判断,如果判断相等(值和类型都相等)的话,则执行对应的 case 后的语句(从该语句开始直到 switch 语句结束或遇到 break)。
- 如果所有的 case 都不满足,则执行 default 后的语句。
注:
- 匹配项 case 和 default 可以是无顺序的。
- 变量或表达式的值一般是 Number 或 String。
使用场合:
- 优先用于等值判断的条件中
使用 break 关键词防止贯穿
语法:
switch(变量或表达式){
case 值1:
语句1.1;
语句1.2;
break; // break 语句的作用在于跳出 switch 结构
case 值2:
语句2;
break; // break 语句的作用在于跳出 switch 结构
... ...
default:
语句n;
}
流程:
- 计算变量或表达式的值。
- 将计算出来的值与 case 后的值做判断,如果判断相等(值和类型都相等)的话,则执行对应的 case 后的语句。
- 如果碰到 break,则结束执行(跳出 switch 结构)。否则,继续向下执行。
利用贯穿优化代码
switch(month){
case 3:
console.log("春季");
break;
case 4:
console.log("春季");
break;
case 5:
console.log("春季");
break;
}
// 等同于
switch(month){
case 3:
case 4:
case 5:
console.log("春季");
break;
}
switch 语句的结束机制
- 碰到 break 结束(碰到 break 跳出 switch 结构)
- 整个结构都执行完毕
循环结构
一遍又一遍的重复执行相同或者相似的代码。
循环中的两大要素:
- 循环条件 —— 什么时候开始,什么时候结束
- 循环操作 —— 循环体,循环过程中干了什么
while 循环
语法:
while(条件表达式){
循环体语句;
}
流程:
- 判断条件表达式的结果
- 如果条件为真,则执行循环操作
- 再次判断条件,如果为真,继续执行循环操作
- ... ...
- 判断循环条件,如果条件为假,则退出循环结构
注:
- 如果循环条件一直为真的话,那么循环就是个死循环,尽量避免死循环的产生,一定要记得更新循环变量(条件)。
- 一般情况下,循环操作中会存在使得循环终止的可能性,否则将成为“死循环”。
do - while 循环
语法:
do{
可执行语句;
}while(条件表达式);
流程:
- 先执行循环操作
- 再判断循环条件
- 如果条件为真,则继续执行循环操作
- 如果条件为假,则终止循环即退出循环
特点:
- 无论条件满足与否,至少要执行一次循环操作
while 与 do...while 区别
- while
- 先判断,后执行
- 最少一次循环都不执行(第一次条件就不满足)
- do...while
- 先执行,后判断
- 最少执行一次循环操作(第一次条件就不满足)
for 循环
语法:
for(表达式1;表达式2;表达式3){
循环体语句;
}
流程:
- 计算表达式1的值
- 计算表达式2(条件表达式)的值,如果为 true 则执行循环体,否则退出循环
- 执行循环体
- 执行表达式3
- 计算表达式2,如果为 true 则执行循环体,否则退出循环
- 如此循环往复,直到表达式2的值为 false,退出循环
注:
- 表达式1通常用来初始化循环中所用的变量(如:var i = 0)
- 表达式2通常为条件表达式,用来判断循环条件(如:i < 5)
- 表达式3通常为控制条件,用来改变初始变量的值(如:i++)
例:
for(var i=0;i<5;i++){
console.log(i);
}
// 表达式1,表达式2,表达式3可以省略,但不推荐。
// 省略表达式1
var i = 0;
for(;i<5;i++){
console.log(i);
}
// 省略表达式2
for(var i=0;;i++){
console.log(i);
}
// 默认循环条件为 true,会反复执行循环,相当于死循环
// 省略表达式3
for(var i=0;i<5;){
console.log(i);
i++;
}
for、while、do - while 之间的区别
1、for,while
- 最少执行0次
- while 多用于不确定循环次数时使用
- for 多用于确定循环次数时使用
2、do - while
- 最少执行1次
- 适合用于不确定循环次数时使用
continue 和 break
continue 关键字
作用:
在循环中用于终止本次循环,继续执行下次循环。
break 关键字
作用:
在循环中用于终止整个循环结构。
循环嵌套
在一个循环体内再出现一个循环。
实例1:
/*
在页面上显示以下图形:
*****
****
***
**
*
*/
for(let i = 0;i < 5;i++){
for(let j = 0;j < 5 - i;j++){
document.write("*");
}
document.write("<br />");
}
实例2:
/*在页面上显示九九乘法表*/
document.write("<table border='1' style='border:0; margin:0 auto'>");
document.write("<caption>九九乘法表</caption>");
for(let i = 1;i <= 9;i++){
document.write("<tr>");
for(let j = 1;j <= i;j++){
document.write("<td>");
document.write(`${j} * ${i} = ${i*j}`);
document.write("</td>");
}
document.write("</tr>");
}
document.write("</table>");
效果: