持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第21天,点击查看活动详情
流程控制语句是区分编程语言和非编程语言的标志。流程控制语句可以控制代码的执行流程或顺序,JavaScript中的流程控制结构有三种,分别是顺序结构、分支结构、循环结构。
顺序结构
字面意思就是代码从上自下执行,程序默认的结构就是由上到下顺序执行的。如图:
分支结构
根据条件判断不同的情况,可能会执行不同的代码。如图:
if语句:根据判断条件(true或false),决定执行哪段代码。也有三种写法:if:如果if条件表达式成立,则执行分支体。
if (/* 条件表达式 */) { // 分支体 语句 }if-else:如果if条件表达式成立,则执行if分支体;如果 if 条件表达式不成立,则执行else分支体。
if (/* 条件表达式 */) { // if 分支体 语句 } else { // else 分支体 语句 }if-else if:在这种结构中,程序从上到下执行,如果某个表达式成立就执行该分支体语句,否则继续往下执行其他分支语句的判断,一旦执行了某个分支体语句,执行完毕该分支语句后,就结束整个结构,若整个结构中没有成立的条件,则执行最后的else分支体。跟if-else相似,if-else if最后总会执行一个分支语句。
if (/* 条件1 */) { // 条件1 分支体 语句 } else if ((/* 条件2 */)) { // 条件2 分支体 语句 } else { // 最后默认分支体 语句 }- 三元运算符:三元运算符是具有三个操作数的运算符,也叫三目运算符,JavaScript中只有一种三元运算符
?:。当if-else语句要返回一个结果时,可以使用三元运算符替换。也可以看作是对if-else语句的简化写法。//表达式1 ? 表达式2 : 表达式3 //如果表达式1结果为true,则返回表达式2的结果,否则返回表达式3的结果。 //定义一个变量存储年龄,判断这个年龄是否满18岁 var age = 16; var result = age >= 18 ? '已成年' : '未成年'; console.log(result); // switch语句:是是通过判断表达式的结果是否等于case语句的常量,来执行相应的分支体的。需要注意的是switch语句有两个特点:switch语句只能做值的相等判断,而if语句可以做值的范围判断;switch语句做值的相等判断时,使用全等运算符===,即值与类型都相等。
switch (表达式) { case 常量1: [语句;] [break;] [case 常量2:] [语句;] [break;] ... [case 常量n:] [语句;] [break;] [default:] [语句;] [break;] }- 布尔类型的隐式转换:流程控制语句会把括号中的表达式的值隐式转换(自动转换)成布尔类型,然后才使用转换后的结果作判断。除了流程控制语句的表达式,一元运算符 "!" 也会将值隐式转换成布尔类型。
//1、在流程控制中使用的隐式转换 var num = 0; if(num){ //做了隐式转换 console.log(num); // 0 } //2、在运算符中的隐式转换 var str = ''; var isRight = !!str; console.log(isRight); // false
循环结构
根据条件判断重复执行一段代码,不符合条件时会跳出循环。如图:
while语句:
// 当循环条件为true时,执行循环体,
// 当循环条件为false时,结束循环。
while (循环条件) {
//循环体
}
dowhile语句:
//先执行循环,直到当循环条件为false时,结束循环,
// 而当循环条件为true时,继续执行循环体。
do {
// 循环体;
} while (循环条件);
for语句:
for (初始化表达式1; 条件表达式2; 自增表达式3) {
// 循环体4
}
执行顺序是:初始化表达式、条件表达式、循环体、自增表达式、条件表达式、循环体、自增表达式、条件表达式、循环体......直到条件表达式 返回false就停止循环。
continue和break
以for循环为例,使用
break:立即跳出当前整个循环(注意:如果是多层循环,则跳出当前层循环),即循环结束,开始执行循环后面的代码(直接跳到大括号);
continue:立即跳出当前(本次)循环,继续下一次循环(跳到i++的地方)。