所谓流程控制,就是指对于流程的执行顺序进行控制。默认情况下,JavaScript 引擎会按照代码的编写顺序,从上往下依次执行代码语句。这种情况一般称之为“顺序执行”。
但不是所有的程序都只靠顺序执行就能够完成的,所以除了顺序执行之外,还需要掌握其他的一些代码执行流程。
JavaScript 中代码的执行顺序大致可以分为三种:
而条件语句,就是用来实现”选择执行“的代码执行顺序。
条件语句原理:通过判断某些条件是否成立,来决定执行哪一部分代码或者不执行哪一部分代码。
条件语句主要分为四种形式:
- 单分支语句
- 双分支语句
- 多分支语句
- 多分支等比语句
单分支语句
单分支条件语句,由一个if
构成,语法结构如下:
|
|
代码执行顺序:
- 判断小括号中的条件是否成立;
- 条件结果为
true
,执行大括号中的代码块; - 条件结果为
false
,跳过大括号中的代码块直接执行大括号后面的代码;
|
|
运行结果:
|
|
代码执行顺序分析:
- 执行第一行,创建一个变量
num
值为10
; - 执行第二行,判断
if
条件num > 0
是否成立:10 > 0
成立; - 进入
if
内部,执行第三行代码,输出"进入 if 语句"
; - 执行第五行,输出
"if 后面的语句"
;
双分支语句
双分支条件语句,由一个if
和一个else
构成,语法结构如下:
|
|
代码执行顺序:
- 判断小括号中的条件是否成立;
- 条件结果为
true
,执行代码块一,跳过代码块二; - 条件结果为
false
,跳过代码块一,执行代码块二;
|
|
运行结果:
|
|
代码执行顺序分析:
- 执行第一行,创建一个变量
num
值为10
; - 执行第二行,判断
if
条件num > 20
是否成立:10 > 20
不成立; - 跳过第三行代码;
- 进入
else
,执行第五行代码,输出"num > 20 条件不成立"
; - 执行第七行代码,输出
"if else 后面的语句"
;
多分支语句
多分支条件语句,即可以设置多个判断条件的语句。由一个if
和多个else if
组成,语法结构如下:
|
|
代码执行顺序:
- 判断条件一是否成立;
- 若条件一成立,执行代码块一;
- 若条件一不成立,继续判断下一个条件是否成立;
- 一旦成功进入某一个条件后,后面的判断都不再执行;
|
|
代码执行顺序分析:
- 执行第一行代码,创建一个变量
score
保存一个成绩数据85
; - 执行第二行代码,判断
if
条件score >= 90
是否成立:85 >= 90
不成立; - 跳过第三行代码;
- 执行第四行代码,判断
else if
条件socre >= 70
是否成立:85 >= 70
成立; - 进入
else if
,执行第五行代码,输出"良好"
; - 整个多分支语句结束,继续执行后面的代码;
附:多分支条件语句还可以结合else
一起使用。语法结构如下:
|
|
当前面所有条件都不成立时,就会执行else
的代码。
|
|
依次判断前面每一个条件,都不成立,最后进入else
,输出"不及格"
。
多分支等比语句
多分支等比语句,即可以设置多个判断条件(判断是否相等)的语句。一个完整的多分支等比语句由一个switch
、多个case
、多个break
(可选)和一个default
(可选)组成,语法结构如下:
|
|
代码执行顺序:
- 判断
匹配条件 === 匹配值1
是否成立; - 若成立,则执行代码块一;
- 若不成立,则继续判断
匹配条件 === 匹配值2
是否成立; - 如果所有
case
值都不匹配,则进入default
,执行代码块n+1;
|
|
代码执行顺序分析:
- 执行第一行代码,创建一个变量
floor
值为'2F'
; - 进入
switch
,判断小括号中的floor
是否全等于第一个case
后面的匹配值'1F'
:floor === '1F'
不成立; - 跳过第四、五行代码;
- 判断
floor
是否全等于第二个case
:floor === '2F'
成立; - 执行第七行,输出
'二楼到了'
; - 执行第八行
break
,跳出整个switch
语句;
说明:
switch
语句有一个特点,一旦进入某一个case
后,如果不通过break
语句跳出,后面所有case
的代码块都会依次执行。