在每种编程语言中,流程控制都是必须要有的。可以说很重要。
流程控制:
顺序结构:代码从上至下执行
选择结构:if...else结构、switch...case结构
在if...else语句中的大括号({})是可以省略的,省略之后只能插入一条语句。
if...else结构如下:
if语句:
if (条件) { 如果条件为 true 时执行的代码 }
else语句:
if (条件) { 条件为 true 时执行的代码块 } else { 条件为 false 时执行的代码块 }
else if语句:
if (条件 1) { 条件 1 为 true 时执行的代码块 } else if (条件 2) { 条件 1 为 false 而条件 2 为 true 时执行的代码块 } else { 条件 1 和条件 2 同时为 false 时执行的代码块 }
switch...case结构如下:
switch语句:
switch(表达式) { case n: 代码块 break; case n: 代码块 break; default: 默认代码块 }
代码解释:
- 计算一次 switch 表达式
- 把表达式的值与每个 case 的值进行对比
- 如果存在匹配,则执行关联代码
break关键字:
如果程序代码遇到break关键字,就会跳出switch代码块。这样可以在我们程序找到匹配的case之后
中断,不去执行其他代码。
注意:
(1)在这里有必要注意的是switch...case结构中每一个case的位置不固定可以随意调动,所以很有必要
在最后一个case条件之后也加上break;
(2)如果两个(或多个)case需要执行的代码相同,可以将两个(或多个)case写在一块儿,实行代码简写
switch(表达式) {
case n:
case n:
代码块 两个case执行相同的代码块。因为case位置不固定,所以case条件可以不连贯
break;
default:
默认代码块
}
循环结构:
JavaScript 支持不同类型的循环:
- for - 多次遍历代码块
- for/in - 遍历对象属性(比如遍历关联数组)
- while - 当指定条件为 true 时循环一段代码块
- do/while - 当指定条件为 true 时循环一段代码块
for循环:较为适合用来已知循环次数的场景
for (语句 1; 语句 2; 语句 3) { 要执行的代码块 }
语句1:在循环(代码块)开始之前执行。一般情况下我们会使用语句1来初始化循环所使用的的变量(i = 0)。
在javaScript中可以对语句1进行省略。也可以在语句1中初始化多个值。
语句2:定义运行循环(代码块的条件)。用于计算初始变量的条件。与语句1亿元也是可以省略的
如果语句2返回true,那么循环会重新开始,如果是false,则循环将结束。
如果省略了语句2,必须在循环中提供一个break去终止循环。否则就会形成死循环。
语句3:会在循环(代码块)每次被执行之后执行。语句3是用来递增初始变量的值。与语句1亿元也可以省略的。
语句3克做很多事,比如负递增(i--),正递增(i = i+ 2),或者其他的事。
在省略了语句3,需要我们在循环(代码块)之后添加。
for/in 循环:用来遍历对象的属性
实例:
while循环:较为适用于不知道循环次数的场景
while 循环会一直循环代码块,只要指定的条件为 true。
语法:
while (条件) { 要执行的代码块 }
实例:在下面的例子中,循环中的代码将运行,一遍又一遍,只要变量(i)小于 10:
注意:如果忘了对条件适用变量递增,那么循环将永远无法结束,死循环。
do/while循环:就是while的另一种形态。不同点在于在检查条件是否为真之前,会先执行一次代码块然后只要条件
为真就会重复循环。
语法:
do { 要执行的代码块 } while (条件);
实例:就用前面while循环实例,用do/while来做
在我们实际的开发中,for与while是可以说是常客。那两者的区别是什么?
在很多情况下,同一个场景两种循环结构都能达到效果,但是有些场景适用不同的循环更加方便。
for适用于明确循环次数。(相比较而言for循环在开发中出现频率更高)
while适用于不知道循环次数。
注意:javaScript语言中,与其他语言不同,它的选择结构和循环结构不构成独立的作用域,也就是说在if...else语句中
的变量能够在if...else语句外部访问到。同样的在for、while循环中的变量在外部同样可以访问。