JavaScript提供3种流程结构:顺序结构、选择结构、循环结构。
顺序结构:默认的流程结构。按照书写顺序从上至下执行每一条语句。
选择结构:对给定的条件进行判断,再根据判断结果来决定执行哪一段代码。
循环结构:在给定条件成立的情况下,反复执行某一段代码。
选择结构
- if
- if 第一种形式
如果条件表达式为真,执行语句块1,否则不执行。
if(条件表达式)
{
语句块1
}
- if 第二种形式
如果条件表达式为真,则执行语句块1,否则执行语句块2。
if(条件表达式)
{
语句块1
}else{
语句块2
}
- if第三种形式
如果条件表达式1为真,则执行语句块1,否则判断条件表达式2,如果为真执行语句块2,否则再判断条件表达式3,如果真执行语句块3,当表达式1、2、3都不满足,会执行最后一个else语句。
if(条件表达式1)
{
语句块1
}else if(条件表达式2){
语句块2
}else if(条件表达式3){
语句块3
}else{
语句块4
}
注意:对于非Boolean类型的值,会先转换为Boolean类型后再判断。
-
Switch
基本格式:
switch(条件表达式){
case 表达式:
语句1;
break;
case 表达式:
语句2;
break;
case 表达式n:
语句n;
break;
default:
语句n+1;
break;
}
计算条件表达式的值。 并逐个与case后面表达式的结果值比较
当条件表达式的值与某个表达式的值全等时, 执行其后的语句,并且不会再与其它case进行比较;
如果条件表达式的值与所有case后的表达式均不相同时,则执行default后的语句。
case后可以是常量也可以是变量。
注意:
1)JavaScript中case判断是否相等时是全等于(===),而不是等于(==)。
2)如果不写break,当结果为true时,会从当前case开始,下面的代码都会被执行。
- if语句和switch语句选择
分支比较多且无法穷尽时最好用 if, 其它情况可以按照个人习惯;
如果数据量不是很大, 并且数据是固定的可以用Switch;
循环结构
-
while循环
格式:
while ( 条件表达式 ) {
语句1;
语句2;
....
}
while语句执行流程:
1)判断条件表达式是否为真,如果为真执行后面大括号中的内容;
2)执行完毕再次判断条件表达式是否还为真,如果为真执行后面大括号中的内容;
3)重复上述过程,直到条件不成立就结束while循环;
// 输出0-9
var num = 0;
while (num < 10){
console.log(num);
num++;
}
对于非Boolean类型的值, 会先转换为Boolean类型再判断。
-
do-while循环
格式:
do {
语句1;
语句2;
....
} while ( 条件 );
do-while语句执行流程:
1)首先会执行一次循环体中的语句;
2)接着判断while中的条件表达式是否为真,如果为真再次执行循环体中的语句;
3)重复上述过程,直到条件不成立就结束while循环;
-
for循环
格式:
for(初始化表达式;循环条件表达式;循环后操作表达式)
{
执行语句;
}
for循环执行流程:
1)先执行初始化表达式,而且在整个循环过程中只执行一次初始化表达式;
2)判断循环条件表达式是否为真,如果条件为真,就会执行循环体中的语句;
3)循环体执行完毕后,接下来会执行循环后的操作表达式;
4)执行完循环后操作表达式, 然后再次判断循环条件表达式是否为真,如果条件为真,就会执行循环体中的语句;
5)重复上述过程,直到条件不成立就结束for循环;
movies = ['海贼王', '名侦探柯南', '火影忍者']
for (let i = 0; i < movies.length; i++){
console.log(movies[i])
}
// ES6语法一
for (let i in movies){
console.log(movies[i])
}
// ES6语法二
for (let item of movies){
console.log(item)
}
- break和continue
break:跳出switch、跳出循环语句,在多层循环中,一个break语句只向外跳一层。
continue:跳过当前循环体中剩余的语句而继续下一次。