在编程中,我们经常需要根据不同条件执行不同的操作,或者重复执行某些操作。JavaScript 提供了多种流程控制结构来实现这些需求。
流程控制是编程中的基本概念,决定了代码的执行顺序。JavaScript 提供了以下几种主要的流程控制结构:
if
语句是最基本的条件控制结构,根据条件表达式的值来决定是否执行某段代码。可以配合 else
和 else if
语句,实现多分支判断。
if (条件) {// 条件为真时执行的代码} else if (其他条件) {// 其他条件为真时执行的代码} else {// 所有条件都为假时执行的代码}
例如:
let score = 85;if (score >= 90) {console.log("优秀");} else if (score >= 80) {console.log("良好");} else if (score >= 60) {console.log("及格");} else {console.log("不及格");}
再看一个简单的二分支示例:
let age = 18;if (age >= 18) {console.log("你已经成年了");} else {console.log("你还未成年");}
条件运算符 ?
是一种简洁的条件选择方式。
let result = 条件 ? 值1 : 值2;
如果条件为真,则返回 值1
,否则返回 值2
。
例如:
let age = 20;let status = age >= 18 ? "成年" : "未成年";
switch
语句用于根据不同的条件执行不同的代码块。
switch (表达式) {case 值1:// 当表达式等于值1时执行的代码break;case 值2:// 当表达式等于值2时执行的代码break;default:// 当表达式不等于任何 case 值时执行的代码}
例如:
let day = 3;let dayName;switch (day) {case 0:dayName = "星期日";break;case 1:dayName = "星期一";break;case 2:dayName = "星期二";break;case 3:dayName = "星期三";break;case 4:dayName = "星期四";break;case 5:dayName = "星期五";break;case 6:dayName = "星期六";break;default:dayName = "未知";}console.log(dayName); // 输出:星期三
Tips: 在 switch
语句中,break
关键字用于跳出 switch
语句。如果没有 break
,代码会继续执行下一个 case
,这被称为"穿透"(fall-through)。
下面是一个关于 fall-through(穿透)现象的例子:
let color = "yellow";switch (color) {case "red":console.log("红色");break;case "yellow":case "blue":console.log("黄色或蓝色");break;default:console.log("其他颜色");}
在上面的例子中,case "yellow":
没有 break,会直接执行下一个 case "blue":
的代码块,所以当 color 为 "yellow" 或 "blue" 时,都会输出"黄色或蓝色"。
while
循环会在条件为真时重复执行代码块。
while (条件) {// 循环体}
例如:
let i = 0;while (i < 5) {console.log(i);i++;}
do...while
循环会先执行一次循环体,然后再检查条件。如果条件为真,则继续执行循环。
do {// 循环体} while (条件);
例如:
let i = 0;do {console.log(i);i++;} while (i < 5);
Tips: do...while
循环至少会执行一次循环体,而 while
循环可能一次都不执行。
for
循环是最常用的循环结构,包含三个部分:初始化、条件和递增/递减。
for (初始化; 条件; 递增/递减) {// 循环体}
例如:
for (let i = 0; i < 5; i++) {console.log(i);}
for
循环的执行顺序: