前面提到流程控制语句主要分为顺序执行、选择执行和循环执行。
循环语句,就是用来实现”循环执行“的代码执行顺序。
循环语句原理:通过判断某些条件是否成立,来决定某一部分代码反复执行的次数。
循环语句主要分为三种形式:
- while 循环
- do while 循环
- for 循环
while 循环
while 循环语句,由一个while
构成,语法结构如下:
|
|
代码执行顺序:
- 判断小括号中条件是否成立;
- 条件成立,执行代码块所有代码;
- 重复第 1、2 步,直到小括号中条件不成立,循环结束。
|
|
运行结果:
|
|
代码执行顺序分析:
- 执行第一行代码,创建一个变量
num
值为3
; - 执行第二行代码,判断条件
num > 1
是否成立:3 > 1
成立; - 进入
while
内部,执行第三、四行代码,输出3
后num
减 1 变成 2; - 执行第二行代码,继续判断条件
num > 1
是否成立:2 > 1
成立; - 进入
while
内部,执行第三、四行代码,输出2
后num
减 1 变成 1; - 执行第二行代码,继续判断条件
num > 1
是否成立:1 > 1
不成立; - 循环结束;
do while 循环
do while 循环语句,由一个do
和一个while
构成,语法结构如下:
|
|
代码执行顺序:
- 进入
do
,执行代码块中的所有代码; - 执行第三行代码,判断条件是否成立;
- 条件成立,继续执行代码块所有代码;
- 重复第 2、3 步,直到小括号中条件不成立,循环结束。
|
|
运行结果:
|
|
代码执行顺序分析:
- 执行第一行代码,创建一个变量
num
值为3
; - 进入
do
内部,执行第三、四行代码,输出3
后num
减 1 变成 2; - 执行第五行代码,判断条件
num > 1
是否成立:2 > 1
成立; - 进入
do
内部,执行第三、四行代码,输出2
后num
减 1 变成 1; - 执行第五行代码,继续判断条件
num > 1
是否成立:1 > 1
不成立; - 循环结束;
for 循环
for
循环语句,由一个for
构成,语法结构如下:
|
|
for
循环语句中包含了四个部分:
- 表达式一:初始化表达式,初始化一个计数器(用于控制循环次数),在循环开始前记录初始状态。
- 表达式二:条件判断表达式,判断给定的状态是否为 true。如果条件为 true,则执行循环体,否则跳出循环。
- 表达式三:改变循环条件,修改计数器的值。
- 代码块四:循环体,需要循环执行的代码块。
代码执行顺序:
- 执行表达式一(初始化表达式);
- 执行表达式二(条件判断表达式),判断条件是否成立;
- 表达式二条件成立,执行代码块四(循环体);
- 执行表达式三(改变循环条件);
- 重复第 2、3、4 步,直到表达式二条件不成立,结束整个
for
循环;
简单来说,
for
循环的执行顺序就是“一 二四三 二四三 二四三 … … 二”。
|
|
运行结果:
|
|
代码执行顺序分析:
- 执行第一行代码中的表达式一
let i = 0
; - 判断第一行代码中的表达式二
i < 2
是否成立:0 < 2
成立; - 执行第二行的代码块四,输出
i
的值0
; - 执行第一行代码中的表达式三
i++
,将i
的值加 1 变成 1; - 判断第一行代码中的表达式二
i < 2
是否成立:1 < 2
成立; - 执行第二行的代码块四,输出
i
的值1
; - 执行第一行代码中的表达式三
i++
,将i
的值加 1 变成 2; - 判断第一行代码中的表达式二
i < 2
是否成立:2 < 2
不成立; for
循环结束;
打断循环
正常情况下,循环语句是在循环条件判断不成立后结束。除了通过这种方式结束循环外,JavaScript 还提供了两种语句用来打断循环。
- break
- continue
break
break
在switch
语句中用于跳出switch
语句,即结束整个switch
。同理,在循环语句中使用break
,也可以实现立即结束整个循环的效果。
|
|
运行结果:
|
|
代码执行顺序分析:
- 执行第一行代码,创建一个变量
count
值为0
; - 执行第二行代码,判断循环条件
count < 3
成立,进入while
; - 执行第三行代码,
count
加 1 变为 1; - 执行第四行代码,判断条件
count == 2
是否成立:1 == 2
不成立; - 跳过
if
,执行第七行代码,输出1
; - 执行第二行代码,判断循环条件
count < 3
成立,进入while
; - 执行第三行代码,
count
加 1 变为 2; - 执行第四行代码,判断条件
count == 2
是否成立:2 == 2
成立; - 进入
if
,执行第五行代码break
; - 循环结束;
一旦
break
语句执行,会立即结束离break
最近的一个循环语句。
continue
continue
也可以用来结束循环,但是它只能结束当前这一次循环,会立即进行下一次的循环条件判断。
|
|
运行结果:
|
|
代码执行顺序分析:
- 执行第一行代码,创建一个变量
count
值为0
; - 执行第二行代码,判断循环条件
count < 3
成立,进入while
; - 执行第三行代码,
count
加 1 变为 1; - 执行第四行代码,判断条件
count == 2
是否成立:1 == 2
不成立; - 跳过
if
,执行第七行代码,输出1
; - 执行第二行代码,判断循环条件
count < 3
成立,进入while
; - 执行第三行代码,
count
加 1 变为 2; - 执行第四行代码,判断条件
count == 2
是否成立:2 == 2
成立; - 进入
if
,执行第五行代码continue
; - 执行第二行代码,判断循环条件
count < 3
成立,进入while
; - 执行第三行代码,
count
加 1 变为 3; - 执行第四行代码,判断条件
count == 2
是否成立:3 == 2
不成立; - 跳过
if
,执行第七行代码,输出3
; - 执行第二行代码,判断循环条件
count < 3
不成立; - 循环结束;
一旦
continue
语句执行,会立即结束离continue
最近的一个循环语句的当前这一次循环。