JavaScript 入门基础 - 流程控制(四)

2023-10-26

JavaScript 流程控制 - 分支和循环


文章目录


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 + '个青枣');
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript 入门基础 - 流程控制(四) 的相关文章

  • Bootstrap“navbar-brand”导致“navbar-nav”项目从导航栏中的中心位置向右移动?

    我正在尝试创建一个导航栏 其左侧有 品牌 LOGO 而实际的导航项目位于整个栏的中心 我正在使用默认的 Bootstrap 导航栏 因为我一周前才开始学习 Web 开发 到目前为止 情况是这样的 但是 您可以看到导航项稍微移动到页面实际中心
  • 在全局范围内查找 JavaScript 函数

    有没有办法在当前活动的对象模型中搜索 JavaScript 属性 例如命名函数 Firebug 在 DOM 选项卡上显示的内容 我在 Chrome 开发人员工具中找不到直接等效项 加载页面 使用主要浏览器的通用开发人员工具 一个例子是 我搜
  • tinyMCE - 将RemoveFormat限制为格式列表

    当前的tinyMCE版本 3 5 2 Hi 我正在开发一个自定义插件 可以添加和删除自定义格式 http www tinymce com tryit custom formats php 向当前选择添加格式很简单 但我做不到 找到删除多种格
  • HTML5 画布在缩放和旋转后平移

    我正在尝试用画布做一些事情 首先 我让用户上传图像 如果图像比我想要的大 我需要将其缩小 那部分工作得很好 最近我们遇到了 iPhone 用户上传图像的问题 这些都存在方向问题 我已经弄清楚如何提取方向 我的问题是当我操纵画布中的图像时会发
  • 推迟未使用的 CSS

    我有一个关键的 CSS 流程 可以防止页面首屏内容出现无样式内容闪现 FOUC 我陷入了 推迟未使用的 CSS 这一点 Google PageSpeed 见解 灯塔 和 或 Chrome 的性能审核强调了这一点 我已经阅读了其他文章 但它们
  • 如何在流星运行时编译新模板?

    如何使用 Handlebars js 在流星中运行时编译新模板 var source
  • 如何使用C从http下载文件?

    最近几天我试图弄清楚如何从 URL 下载文件 这是我对套接字的第一个挑战 我用它来了解协议 所以我想在没有 cURL 库的情况下只用 C 语言来完成它 我搜索了很多 现在我可以打印页面的源代码 但我认为这与文件不同 我不必只将接收到的数据从
  • 当位置从相对固定变为固定时,div 的宽度会发生变化

    当 div topNav 的位置样式从相对更改为固定时 其宽度会更改几个像素 我找到了一个 jquery 插件 http imakewebthings github com jquery waypoints 它可以优雅地执行我正在寻找的相同
  • 一种用javascript创建随机噪声背景图像(png)的方法?

    YouTube的新布局添加了我非常喜欢的背景随机噪声 在其他网站上看到了几乎完全相同的效果 所以我计划在我的网页原型中使用相同的技术 或者至少在其中使用这个 技巧 我的工具箱以供将来使用 图片是这样的 取自http g raphaeljs
  • Node.js ES6如何从模块导出类? [复制]

    这个问题在这里已经有答案了 我正在尝试从 Node js 6 2 0 中的 CommonJS 模块导出 ES6 类 class MyClass class contents here exports MyClass 然后将其导入到另一个模块
  • 正则表达式问题 - 在字符串中查找数字

    我目前正在使用 JavaScript 从字段中获取字符串 在该字段中通常会有 宽度 56 空隙 67 我需要做的是识别 1 440 范围内的两个数字 并将它们放入两个不同的字段中 字段 1 宽度 字段 2 无效 我已经研究过正则表达式 到目
  • Phantomjs page.content 未检索页面内容

    我使用 Phantomjs 来抓取使用 JavaScript 和 Ajax 加载动态内容的网站 我有以下代码 var page require webpage create page onError function msg trace v
  • 设置 D3 力定向图

    致尊敬的读者 我对 javascript 相当陌生 我也遇到过这个问题 我正在尝试实现这个力导向图的修改版本 http mbostock github com d3 ex force html http mbostock github co
  • Javascript TypeError:无法读取未定义的属性“indexOf”

    在此代码中 我想从cart products array var cart products 17 1 19 1 18 1 var product 17 each cart products function key item if ite
  • 应返回带有 html 代码的字符串的支持 bean 属性返回空字符串

    我的支持 bean 中有一个返回 html 代码的属性 public String getHtmlPrevisualizar return Hello world 我想要做的是在 iframe 中显示这个 html 代码 我用 JavaSc
  • Angular 中的动态子组件

    我正在构建一个具有一致的元素列表设计模式的应用程序 如果我有一个 A 类型的对象 我会创建AComponent它接受a作为输入 然后创建另一个组件来迭代 A 列表 AListComponent 那么如果我有一个对象 B 我需要做同样的事情
  • 垂直滚动,与 div/元素/锚点对齐/对齐

    我发现了一些可爱的网站 http www mini jp event campaign big point http www mini jp event campaign big point http www twenty8twelve c
  • Selenium 查看鼠标/指针

    有什么方法可以在运行测试时真正看到硒鼠标吗 要么是 Windows 光标图像 要么是某种点或十字线或任何东西 我正在尝试使用拖放功能selenium and java in an HTML5Web 应用程序 并且能够看到光标以了解它实际在做
  • 检测 JavaScript 代码中的拼写错误

    在Python世界中 使用最广泛的静态代码分析工具之一 pylint has a 特别检查 https stackoverflow com questions 27162315 automated docstring and comment
  • 根据唯一测试提取站点地图 URL 和 cy.request() 每个 URL (Cypress) [重复]

    这个问题在这里已经有答案了 将 Cypress 与 TypeScript 结合使用 我的代码目标是提取 sitemap xml 中的所有 URL 和 cy request 每个 URL 的状态 200 这个版本的工作原理 describe

随机推荐

  • 什么是哈希算法?

    哈希算法的基本含义 哈希是密码学的基础 理解哈希是理解数字签名和加密通信等技术的必要前提 哈希 英文是 hash 本来意思是 切碎并搅拌 有一种食物就叫 Hash 就是把食材切碎并搅拌一下做成的 哈希函数的运算结果就是哈希值 通常简称为哈希
  • iframe允许嵌入的视频全屏播放

    iframe允许嵌入的视频全屏播放 设置 allowfullscreen true
  • 记一次修改DiyBox的经历(openwrt固件解包与打包)

    吐槽几句 做技术的有无私造福人类的 也有耍流氓坑人的 说的不是DiyBox 而是 信利 信利就是一家犯贱 祸害大学生 助纣为虐的流氓公司 其所谓的 防私接 技术让电信和移动牢牢的垄断着学校的宽带资源 还让学生花费了大量的冤枉钱 当然 有狗熊
  • openGL之API学习(二十九)glDepthRange

    将规范化的深度范围 1 1 通过线性变换映射到 nearVal farVal 这个范围不能超出 0 1 这个函数的作用一般是分层渲染 比如要渲染一副从窗户看外面世界的场景 可以将外面场景的深度值映射为0 5 1 将室内场景深度值映射为0 0
  • 第二篇:C语言中实现两个数的加法运算

    代码展示 实现两个数的加法运算 include
  • TCP协议

    1 TCP协议基本概念 RFCs 793 1122 1323 2018 2581 1 1 TCP协议的特点 点对点 一个发送方 一个接收方 可靠的 按序的字节流 可靠的 多种确保可靠性的机制 字节流服务 8bit 1Byte 为最小单位构成
  • 好的软件架构设计

    什么是软件架构 前言 软体设计师中有一些技术水平较高 经验较为丰富的人 他们需要承担软件系统的架构设计 也就是需要设计系统的元件如何划分 元件之间如何发生相互作用 以及系统中逻辑的 物理的 系统的重要决定的作出 在很多公司中 架构师不是一个
  • 在VS中配置VTK

    VTK与VS结合使用有两种配置方式 一种是配置cmake 一种是配置VS 两者配置一者即可 我这里只讲解一下配置VS的步骤吧 我用的是VS2010 打开VS 找到属性 在VC 目录中修改包含目录和库目录为自己安装VTK的include和li
  • 华为OD机试真题-最多等和不相交连续子序列【2023Q2】【JAVA、Python、C++】

    题目描述 给定一个数组 我们称其中连续的元素为连续子序列 称这些元素的和为连续子序列的和 数组中可能存在几组连续子序列 组内的连续子序列互不相交且有相同的和 求一组连续子序列 组内子序列的数目最多 输出这个数目 输入描述 第一行输入为数组长
  • 怎么用计算机算lnx,ln计算(log计算器在线)

    ln MN lnM lnN ln M N lnM lnN ln M n nlnM ln1 0 lne 1 注意 拆开后 M N需要大于0 没有 ln M N lnM lnN 和ln M N lnM lnN lnx 是e x的反函数 也就是说
  • 华为设置android系统提醒功能,华为手机短信不提醒怎么办?华为手机短信提醒设置方法...

    华为手机短信提醒设置方法 1 检查当前设置的默认短信应用是哪个应用 点击桌面 设置 图标 找到 应用程序管理 选择 默认应用设置 选择 信息 可以看到当前正在使用的默认短信应用名称 如果使用的是第三方短信应用 请将 信息 勾选 改为使用默认
  • 制造蝴蝶飓风,微众区块链的蝶变和ESG新使命

    时间来到新世纪 共同繁荣 人与自然和谐发展等成为全球共识的背景下 越来越多的国家和组织开始践行ESG 环境 社会和公司治理 理念 在中国 乡村振兴 共同富裕 双碳战略 数字经济等国家级战略的推出 也旨在推动 效率优先 的发展模式 向公平与可
  • 生成openVPN客户端配置的shell脚本

    脚本介绍 在服务端 etc openvpn 目录下存放该脚本 client sh 脚本运行 运行方式 client sh client name client name填你想输入的客户端名称 例如 输入yes 和相应的ca密钥 运行成功如图
  • Python调用WebServer(WSDL)注意事项

    本人很少与WebServer交互 最近调用公司SAP的同步人员信息 发现一些很小的点 但是很浪费时间的注意事项 第一 不要去相信对方开发者嘴中所谓的JSON 很有可能是各种非标准JSON 这是非标准JSON 至于标准的 键带有双引号的 re
  • 关于域控DC不能正常同步GC的解决办法(域控时间超过墓碑时间) 与域控SRV记录

    现象 用户两台域控 GC PDC 上面创建用户DC不能正常同步 DC上面创建用户GC能够同步 同时发现有一台文件服务器有些机器不能正常访问 提示共享无权限 原因 用dcdiag命令在GC上没有问题 在DC上发现墓碑时间问题 可以确定是墓碑时
  • UnityHub打不开自己的项目的一个可能

    自己的unity项目前几天还一切正常 突然就打不开了 从unity跳转不到hub 从hub点项目转了几圈就没反应了 也没办法新建项目 看了网上很多解决方法 重新登录 没反应 删了unityhub重新下载 没反应 关闭防火墙重新插usb接口这
  • 关于Typora初次下载输入代码时代码行号不显示的问题

    关于Typora初次下载输入代码时代码行号不显示的问题 我刚用Typora的时候 打开代码块发现居然不显示行号 以下是我打开代码块内行号的显示的步骤 我刚用Typora的时候 打开代码块发现居然不显示行号 以下是我打开代码块内行号的显示的步
  • dataframe按照某一列的取值进行拆分

    dataframe按照某一列 假设列名为 columnname 的取值进行拆分 即 比如dataframe的第一列只有 a b 两种取值可能 就把dataframe拆分成两个小的dataframe 一个dataframe的第一列只取 a 另
  • 【WiFi】Hostapd工作流程分析

    目录 1 Hostapd概述 2 Hostapd代码框架 3 Hostapd各种命令配置工具 4 hostaod的主函数 5 hostaod代码分析 1 Hostapd概述 Hostapd是一个运行在用户态的守护进程 可以通过Hostapd
  • JavaScript 入门基础 - 流程控制(四)

    JavaScript 流程控制 分支和循环 文章目录 JavaScript 流程控制 分支和循环 1 什么是流程控制 2 顺序流程控制 3 分支流程控制 之 if语句 3 1 什么是分支结构 3 2 if 语句 3 2 1 if 语句基本理