JavaScript 入门基础 - 流程控制(四)
创始人
2024-05-04 00:39:05
0

JavaScript 流程控制 - 分支和循环


文章目录

  • JavaScript 流程控制 - 分支和循环
    • 1. 什么是流程控制
    • 2. 顺序流程控制
    • 3. 分支流程控制 之 if语句
      • 3.1 什么是分支结构
      • 3.2 if 语句
        • 3.2.1 if 语句基本理解
        • 3.2.2 if 语句执行流程
        • 3.2.3 if 语句案例
      • 3.3 if else语句(双分支语句)
        • 3.3.1 引言
        • 3.3.2 if else 语法基本理解
        • 3.3.3 判断闰年案例
      • 3.4 if else if 语句(多分支语句)
        • 3.4.1 if else if 语句基本理解
    • 4. 三元表达式
      • 4.1 三元表达式基本理解
      • 4.2 三元运算符案例
    • 5. switch语句
      • 5.1 switch语句基本理解
      • 5.2 switch语句注意事项
    • 6. switch语句和 if else if语句的区别
    • 7. 循环控制
      • 7.1 循环控制基本理解
      • 7.2 JS当中的循环
      • 7.3 for循环
        • 7.3.1 for循环基本理解
        • 7.3.2 for 循环的执行过程
        • 7.3.3 利用for循环执行不同的代码
        • 7.3.4 for循环案例
        • 7.3.5 for循环小结
      • 7.4 断点调试
        • 7.4.1 什么是断点调试
        • 7.4.2 断点调试方式
      • 7.5 while循环
        • 7.5.1 while循环基本理解
        • 7.5.2 while循环案例
      • 7.6 do while 循环
        • 7.6.1 do while 循环基本理解
      • 7.7 continue 关键字
      • 7.8 break 关键字


1. 什么是流程控制

在程序执行过程中,每一条代码执行的顺序对程序执行的结果有直接的影响,有时我们需要通过控制代码的执行顺序来实现我们所要执行的操作,这就是流程控制,简单来说就是控制代码的执行顺序,来达到影响执行结果的目的。

流程控制主要分为三种结构:

  • 顺序结构:按代码顺序一条条执行。
  • 分支结构:按照给定的条件进行判断,然后决定执行哪一句代码。
  • 循环结构:按照给定的条件进行判断,重复执行某一条代码。

在这里插入图片描述

2. 顺序流程控制

顺序流程控制就是按照代码的先后顺序依次执行,大多数代码都是这样执行的。

var age = 17;
age++;
console.log(age); // 程序按照顺序执行,结果为18

3. 分支流程控制 之 if语句

3.1 什么是分支结构

由上向下执行代码过程中,遇到条件进行判断,去执行不同分支的代码(执行代码多选一),从而得到不同的结果。

在js中有两种分支语句:

  • if 语句
  • switch 语句

3.2 if 语句

3.2.1 if 语句基本理解

if语句由 小括号()、条件表达式、大括号、执行语句构成:

if (条件表达式) {// 条件表达式为真时执行的语句
}

if 语句 的执行思路:如果条件表达式为(true),则执行大括号里面的 执行语句,如果条件表达式为(false),则不执行大括号里面的执行语句,去执行if 语句后面的代码。

if (12 > 5) {alert('我亦无他,唯手熟尔'); //12 > 5为真,执行大括号里面的代码
}

3.2.2 if 语句执行流程

在这里插入图片描述
先执行判断条件,为真则执行if 中的语句,为假则执行if 语句后面的其他语句

3.2.3 if 语句案例

进入网吧

  1. 弹出输入框让用户输入年龄,把年龄保存到变量中
  2. 使用 if 语句判断年龄是否大于18,大于则执行if 中的语句
var age = prompt('请输入你的年龄:');
if (age > 18) {alert('您的年龄大于18岁,可以进入网吧');
}

3.3 if else语句(双分支语句)

3.3.1 引言

从上面的进入网吧案例我们可以看出,当我们输入的年龄小于18,程序什么也不会执行,这是不完美的,在这里我们可以用到 if else 语句。

3.3.2 if else 语法基本理解

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

执行思路:如果条件表达式为真,则执行if 语句中的代码,否则就执行else语句当中的代码,if 里面的语句和 else里面的语句只能执行一个(二选一),现在我们来完善一下进入网吧案例:

var age = prompt('请输入你的年龄:');
if (age > 18) {alert('您的年龄大于18岁,可以进入网吧');
} else {alert('对不起,你还未成年');
}

3.3.3 判断闰年案例

接收用户输入的年份,判断是闰年还是平年

基本思路:

  1. 闰年:能被4整除且不能整除100的年份,或者能够被400整除的年份
  2. 弹出输入框,让用户输入年份,然后保存到变量中
  3. 用if else 语句判断是闰年还是平年

实现代码:

var year = prompt('请输入你要判断的年份:');
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {alert('你输入的年份是闰年');
} else {alert('你输入的年份是平年');
}

3.4 if else if 语句(多分支语句)

3.4.1 if else if 语句基本理解

多分支语句就是利用多个条件来选择不同的语句执行得到不同的结果,是一种多选一的过程。语法规范如下:

if (条件表达式1) {// 执行语句1;
} else if (条件表达式2) {// 执行语句2;
} else if (条件表达式3) {// 执行语句3;
} else {// 最后要执行的语句4;
}

在这里插入图片描述
执行思路:如果条件表达式1成立,则执行语句1,否则判断条件表达式2,如果条件表达式2成立,则执行语句2,不成立则判断条件表达式3,成立则执行表达式3,如果上面所有条件表达式都不成立,则执行else里面的语句

注意:

  • 多分支语句是一个多选一的过程,最终只有一个语句能执行
  • else if 里面的条件是可以有多个的

4. 三元表达式

4.1 三元表达式基本理解

三元表达式:是由三元运算符组成的式子,语法规范如下:

条件表达式 ?表达式1 :表达式2

执行思路:如果条件表达式为真,则返回表达式1的值,如果条件表达式结果为假,则返回表达式2的值,比如:

var age = 18;
var result = age > 18 ? '是的' : '不是的'; // 表达式会返回一个值
console.log(result);

4.2 三元运算符案例

数字补零:要求用户输入0 ~ 30 之间的任一个数字,如果数字小于10,则在数字前面补零,大于10则不做操作,具体代码如下:

var day = prompt('请输入0 ~ 30 之间任何一个数字:'); // 定义一个变量接收用户输入的值
var result = day < 10 ? 0 + day : day; // 利用三元运算符补零
alert(result); // 输出结果

5. switch语句

5.1 switch语句基本理解

switch语句也是一种多分支语句,通过不同的条件来执行不同的代码,如要正对变量设定一系列的特定值可以用到switch语句,具体语法规范如下:

switch(表达式) {case value1:	// case 是案例,实例,选项的意思执行语句1;break;case value2:执行语句2;break;	...default:最后的执行语句; // 都没有匹配上所要执行的语句
}

执行思路:利用表达式返回的值和 case 选项后面的值相匹配,如果匹配的上,则执行 case 里面的语句,如果都不匹配,则执行 default 里面的语句。

switch(1) { // 影响结果的是switch里面表达式返回的值case 1:alert('这是1呀');break;case 2:alert('这是2呀');break;case 3:alert('这是3呀');break;default:alert('啊哦,都不是');
}

5.2 switch语句注意事项

  1. 开发中,switch括号里面表达式我们往往写成变量
  2. switch括号里面变量的值和 case 先匹配是指 他们全等,必须数据类型和值都一致才能称为相匹配。
  3. break是指跳出当前语句,如果case中没有 break 则不会跳出 switch 语句,会继续执行下一个 case 。

6. switch语句和 if else if语句的区别

  • switch…case语句通常判断确定值的情况,而 if…else语句更加灵活,可以判断范围(比如:大于、小于、等于某个范围)。
  • switch语句可直接执行到满足条件的语句,效率更高,而if…else语句有几种条件就要判断多少次。
  • 分支较少时使用if…else语句执行效率更高。
  • 但分支较多时,switch语句的执行效率比较高,而且结构更加清晰。

7. 循环控制

7.1 循环控制基本理解

循环的目的:在开发中,我们需要重复大量的执行某一些代码,即对一些代码做有规律的重复操作。

for (var i = 1; i < 1000; i++) {console.log('加油,你是最棒的');
}

7.2 JS当中的循环

在js中有三种类型的循环语句:

  • for循环
  • while循环
  • do…while循环

7.3 for循环

7.3.1 for循环基本理解

在程序中被重复执行的语句被称之为循环体,能否继续重复执行,取决于循环的终止条件,由循环体及循环终止条件组成的语句,称之为循环语句,for循环主要把结构循环若干次,它是根据计数来决定循环次数的,主要语法结构如下:

for (初始化变量; 条件表达式; 操作表达式 ) {// 循环体
}
  • 初始化变量:就是用 var 声明一个变量作为计数器使用。
  • 条件表达式:就是用来决定每一次循环继续的条件,也就是终止条件。
  • 操作表达式:对计数器实行更新的操作,每循环一次对计数器进行更新(递增或者递减)

加一百次油代码实例:

for (var i = 1; i <= 100; i++) {console.log('加油');
}

7.3.2 for 循环的执行过程

我们拿上面的实例来理清for循环的执行过程:

  1. 首先执行for里面的计数器变量 var i = 1,这句话在for里面只执行一次。
  2. 判断 i <= 100 是否满足条件,如果满足条件就执行循环体,不满足就退出for循环。
  3. 执行完循环体最后去执行 i++ ,i++是单独的代码,表示计数器递增,它执行完表示一轮循环结束。
  4. 接着去执行 i <= 100 ,如果满足条件,就去执行循环体,不满足则退出循环,第二轮循环开始。

7.3.3 利用for循环执行不同的代码

我们可以利用for循环计数器 i 执行不同代码,因为 i 每次执行循环后都会变化:

for (var i = 1; i <= 100; i++) {console.log('第' + i + '天,太阳东升西落');
}

7.3.4 for循环案例

求1 ~ 100 之间的整数累加和:我们需要利用计数器循环100次,再利用一个变量存储结果,初始值为0

var result = 0;
for (var i = 1; i <= 100; i++) {result = result + i;
}
console.log(result);

打印九九乘法表:利用双重for循环打印九九乘法表

  • 一共9行,每行个数不相同
  • 外层for循环控制行数i,循环9次,打印9行
  • 内层for循环控制每行公式j
  • 核心算法:每一行的公式个数正好和行数一致:j <= i
  • 每行打印完毕重新换行
var str = '';
for (var i = 1; i <= 9; i++) {		// 外层循环控制行数for (var j = 1; j <= i; j++) {		// 内层循环控制每一行的个数str += j + 'x' + i + '=' + i * j + '\t';}str += '\n';
}
console.log(str);

输出结果如下:
在这里插入图片描述

7.3.5 for循环小结

  • for循环可以重复执行某些代码
  • 可以通过for循环计数器执行不同的代码
  • for循环可以重复执行某些操作
  • 双重for循环可以做更多的、更加好看的效果
  • 双重for循环外层循环一次,那么内层for循环全部执行
  • for循环次数直接和循环条件和数字相挂钩
  • 自己举一反三,分析核心算法,学会它的执行过程,经常总结,做一些案例

7.4 断点调试

7.4.1 什么是断点调试

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

7.4.2 断点调试方式

断点调试是非常重要的,它可以帮我们观察程序运行的过程,找出里面存在的bug,下面分享几个简单的调试常用按钮:

  • 浏览器按F12 ——> sources ——> 找到要调试的文件 ——> 在程序的某一行设置断点
  • Watch监视:通过watch可以监视变量值的变化。
  • F11:让程序单步执行,观察watch中变量值的变化。
    在这里插入图片描述

7.5 while循环

7.5.1 while循环基本理解

while循环可以在条件表达式为真时,循环执行指定的一段代码,知道条件表达式不为真结束循环。语法结构如下:

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

执行思路:

  • 先执行表达式,为真则执行循环体代码,为假则退出循环,执行后面的代码。
  • 循环体代码执行完毕后,程序会继续判断条件表达式,如果仍为真,则继续执行循环体代码,直到条件表达式为假,整个循环过程才会结束。
var num = 1;
while (num <= 100) {console.log('加油');num++; // 实现计数器更新,防止死循环
}

注意:while循环也有计数器,初始化变量,也应该有操作表达式,实现计数器的更新,防止死循环。

7.5.2 while循环案例

弹出提示框:你爱js吗? 如果输入我爱,就提示结束,否则一致询问。实现代码如下:

var question = prompt('你爱js吗?');
while (question !== '我爱') {question = prompt('你爱js吗?');
}
alert('我也爱js');

7.6 do while 循环

7.6.1 do while 循环基本理解

do while循环其实是 while 语句的一个变体,该循环会先执行一个代码块,然后在对条件表达式进行判断,如果为真,则执行循环体,否则退出循环,基本语法如下:

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

执行思路:跟while循环不同的是 do while 先执行一次循环体,再判断条件表达式,如果为真,则继续执行循环体,为假则退出循环。

var i = 1;
do {console.log('加油');i++;
} while(i <= 100);

注意:do while 循环语句先执行一次循环体再进行判断,这说明它至少会执行一次循环体。

7.7 continue 关键字

continue 用于立即跳出本次循环,继续下一次循环,例如:吃5个青枣,第2个有虫子扔掉,继续吃第3个第 4个第5个青枣,代码演示:

for (var i = 1; i <= 5; i++) {if (i  == 2) {continue;}console.log('我吃第' + i + '个青枣');
}

7.8 break 关键字

break 关键字用于立即跳出整个循环(表示循环结束),例如:吃5个青枣,发现第2个有虫子,其余的都不吃了。代码演示:

for (var i = 1; i <= 5; i++) {if (i  == 2) {break;}console.log('我吃第' + i + '个青枣');
}

相关内容

热门资讯

安卓系统自带的网页,功能与特色... 你有没有发现,每次打开安卓手机,那熟悉的系统界面里总有一个默默无闻的小家伙——安卓系统自带的网页浏览...
美咖云系统安卓版,开启智能生活... 你有没有发现,最近手机上多了一个叫“美咖云系统安卓版”的小家伙?它就像一个魔法师,轻轻一点,就能让你...
安卓系统推荐最好的手机,盘点性... 你有没有想过,拥有一部性能卓越的手机,就像是拥有了移动的宝藏库?在这个信息爆炸的时代,一部好手机不仅...
安卓11系统能精简吗,释放潜能 你有没有发现,随着手机越来越智能,系统也越来越庞大?安卓11系统,这个最新的操作系统,是不是也让你觉...
安卓自动重启系统软件,揭秘原因... 手机突然自动重启,是不是感觉整个人都不好了?别急,今天就来和你聊聊这个让人头疼的安卓自动重启系统软件...
苹果手机x刷安卓系统,探索安卓... 你有没有想过,你的苹果手机X竟然也能刷上安卓系统?是的,你没听错,就是那个一直以来都和我们苹果手机X...
安卓系统智商低吗,智商低下的真... 你有没有想过,为什么安卓系统的智商总被调侃得好像有点低呢?是不是觉得它总是慢吞吞的,有时候还犯点小错...
安卓系统手机联系人,揭秘你的社... 你有没有发现,手机里的联系人列表就像是一个小小的社交圈呢?里面藏着我们的亲朋好友、工作伙伴,甚至还有...
安卓系统免费铃声下载,打造个性... 手机里那首老掉牙的铃声是不是让你觉得有点out了呢?别急,今天就来给你支个招,让你轻松给安卓手机换上...
安卓系统用哪个桌面好,打造个性... 你有没有发现,手机桌面可是我们每天都要面对的“脸面”呢?换一个好看的桌面,心情都能跟着好起来。那么,...
虚拟大师是安卓10系统,功能与... 你知道吗?最近在手机圈里,有个新玩意儿引起了不小的轰动,那就是虚拟大师!而且,更让人惊喜的是,这个虚...
安卓系统与苹果优缺点,系统优缺... 说到手机操作系统,安卓和苹果绝对是两大巨头,它们各有各的特色,就像两道不同的美味佳肴,让人难以抉择。...
安卓win双系统主板,融合与创... 你有没有想过,一台电脑如果既能流畅运行安卓系统,又能轻松驾驭Windows系统,那该有多爽啊?没错,...
安卓系统可精简软件,轻松提升手... 你有没有发现,手机里的安卓系统越来越庞大,软件也越装越多,有时候感觉手机就像个“大肚子”,不仅运行速...
安卓系统基于linux的代码,... 你有没有想过,那个陪伴你每天刷抖音、玩游戏、办公的安卓系统,其实背后有着一套复杂的基于Linux的代...
苹果和安卓的拍照系统,谁更胜一... 你有没有发现,现在手机拍照已经成为我们生活中不可或缺的一部分呢?无论是记录生活的点滴,还是捕捉美丽的...
苹果和安卓系统不同吗,系统差异... 你有没有想过,为什么你的手机里装的是苹果的iOS系统,而朋友的手机却是安卓系统呢?这两种系统,看似都...
安卓系统有多少级,揭秘其多级架... 你有没有想过,那个陪伴我们日常生活的安卓系统,它其实有着丰富的层级结构呢?没错,就是那个让我们的手机...
华为鸿蒙系统与安卓的,技术融合... 你知道吗?最近科技圈可是炸开了锅,华为鸿蒙系统与安卓的较量成为了大家热议的话题。这不,今天我就来给你...
什么安卓手机是苹果系统,搭载苹... 你有没有想过,为什么有些人宁愿花大价钱买苹果手机,而有些人却对安卓手机情有独钟呢?其实,这个问题背后...