JS 入门之程序的三种结构


 JS 入门章节目录


第七章:程序的三种结构

文章の目录

程序的三种结构

顺序结构

分支结构

if 语句

if

if - else

else if

switch 语句

使用 break 关键词防止贯穿

利用贯穿优化代码

switch 语句的结束机制

循环结构

while 循环

do - while 循环

while 与 do...while 区别

for 循环

for、while、do - while 之间的区别

continue 和 break

continue 关键字

break 关键字

循环嵌套


正文

程序的三种结构

  • 顺序结构
  • 分支结构 
  • 循环结构

顺序结构

顺序结构是最简单的程序结构,程序中的各个操作是按照他们在源代码中的排列顺序,自上而下,依次执行。

分支结构

程序在运行过程中,根据不同的条件,选择执行某些语句。

if 语句

if

语法:

if(条件表达式){
    // 语句块;
}

流程:

  1. 判断条件表达式的结果。
  2. 如果结果为 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. 如果条件1为假,则判断条件2。如果条件2为真,则执行语句块2中的操作。
  3. 如果条件2为假,则判断条件3。如果条件3为真,则执行语句块3中的操作。
  4. ... ...
  5. 如果所有条件都为假,则执行语句块n中的操作。

注:

  • 最后的 else 模块,可以选择性添加。

switch 语句

switch 语句是一种特殊的分支结构,可以根据一个变量或表达式的不同取值,从不同的程序入口开始执行。

语法:

switch(变量或表达式){
    case 值1:
        语句1.1;
        语句1.2;
    case 值2:
        语句2;
    ... ...
    default:
        语句n;
}

流程:

  1. 计算变量或表达式的值。
  2. 将计算出来的值与 case 后的值做判断,如果判断相等(值和类型都相等)的话,则执行对应的 case 后的语句(从该语句开始直到 switch 语句结束或遇到 break)。
  3. 如果所有的 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;
}

流程:

  1. 计算变量或表达式的值。
  2. 将计算出来的值与 case 后的值做判断,如果判断相等(值和类型都相等)的话,则执行对应的 case 后的语句。
  3. 如果碰到 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 结构)
  • 整个结构都执行完毕

循环结构

一遍又一遍的重复执行相同或者相似的代码。

循环中的两大要素:

  1. 循环条件 —— 什么时候开始,什么时候结束
  2. 循环操作 —— 循环体,循环过程中干了什么

while 循环

语法:

while(条件表达式){
    循环体语句;
}

流程:

  1. 判断条件表达式的结果
  2. 如果条件为真,则执行循环操作
  3. 再次判断条件,如果为真,继续执行循环操作
  4. ... ...
  5. 判断循环条件,如果条件为假,则退出循环结构

注:

  • 如果循环条件一直为真的话,那么循环就是个死循环,尽量避免死循环的产生,一定要记得更新循环变量(条件)。
  • 一般情况下,循环操作中会存在使得循环终止的可能性,否则将成为“死循环”。

do - while 循环

语法:

do{
    可执行语句;
}while(条件表达式);

流程:

  1. 先执行循环操作
  2. 再判断循环条件
    1. 如果条件为真,则继续执行循环操作
    2. 如果条件为假,则终止循环即退出循环

特点:

  • 无论条件满足与否,至少要执行一次循环操作

while 与 do...while 区别

  • while
    • 先判断,后执行
    • 最少一次循环都不执行(第一次条件就不满足)
  • do...while
    • 先执行,后判断
    • 最少执行一次循环操作(第一次条件就不满足)

for 循环

语法:

for(表达式1;表达式2;表达式3){
    循环体语句;
}

流程:

  1. 计算表达式1的值
  2. 计算表达式2(条件表达式)的值,如果为 true 则执行循环体,否则退出循环
  3. 执行循环体
  4. 执行表达式3
  5. 计算表达式2,如果为 true 则执行循环体,否则退出循环
  6. 如此循环往复,直到表达式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>");

效果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值