[JavaScript] 深入理解流程控制结构

devtools/2025/1/20 18:43:15/


在编程中, 流程控制是指控制代码执行顺序的机制。通过流程控制结构,我们可以根据不同的条件执行不同的代码块,实现逻辑判断、循环遍历和跳出循环等功能。常见的流程控制语句有: if-elseswitch-caseforwhile,以及控制语句 breakcontinue。本文将详细讲解这些控制结构的用法,并深入理解 breakcontinue的应用。

1. if-else 语句

if-else语句是最基本的流程控制结构之一,用于基于条件表达式来执行不同的代码块。它通过判断一个或多个条件表达式的真假来决定是否执行某个代码块。

基本语法:
javascript">if (condition) {// 条件为 true 时执行的代码
} else {// 条件为 false 时执行的代码
}
示例:
javascript">let age = 20;
if (age >= 18) {console.log("成年人");
} else {console.log("未成年人");
}
扩展:else if

如果有多个条件需要判断,可以使用else if来处理多个分支条件。

javascript">let score = 85;
if (score >= 90) {console.log("优秀");
} else if (score >= 75) {console.log("良好");
} else if (score >= 60) {console.log("及格");
} else {console.log("不及格");
}

2. switch-case 语句

switch-case语句用于处理多个可能的条件,通常适用于多个不同值的判断。它与if-else相比更简洁,尤其在有多个值需要判断时。

基本语法:
javascript">switch (expression) {case value1:// expression === value1 时执行的代码break;case value2:// expression === value2 时执行的代码break;default:// 如果没有匹配的 case 执行的代码
}
示例:
javascript">let fruit = "apple";
switch (fruit) {case "apple":console.log("这是一个苹果");break;case "banana":console.log("这是一个香蕉");break;default:console.log("未知的水果");
}
注意事项:
  • switch语句会比较严格的值(包括数据类型),因此如果需要进行非严格的比较,可以考虑使用if-else
  • break是用来跳出switch语句块的。如果没有break,程序会继续执行下一个case,即使它的值不匹配,这种情况叫做fall-through

3. for 循环

for循环用于重复执行一段代码,直到满足退出条件。它通常用于已知执行次数的场景。

基本语法:
javascript">for (initialization; condition; increment) {// 循环体
}
  • initialization:初始化部分,通常用于定义和初始化循环变量。
  • condition:条件表达式,判断是否继续执行循环。
  • increment:每次循环结束时,更新循环变量。
示例:
javascript">for (let i = 0; i < 5; i++) {console.log(i);  // 输出 0 1 2 3 4
}
扩展:for-infor-of
  • for-in:用于遍历对象的键(属性)。
  • for-of:用于遍历数组或其他可迭代对象的元素。
javascript">// for-in 示例
const person = { name: "Alice", age: 25 };
for (let key in person) {console.log(key + ": " + person[key]);
}// for-of 示例
let arr = [1, 2, 3];
for (let value of arr) {console.log(value);  // 输出 1 2 3
}

4. while 循环

while循环用于在条件为真时反复执行一段代码,适用于循环次数不确定的情况,通常在开始前无法预知循环次数时使用。

基本语法:
javascript">while (condition) {// 循环体
}
示例:
javascript">let count = 0;
while (count < 5) {console.log(count);  // 输出 0 1 2 3 4count++;
}
注意事项:
  • 如果条件从一开始就是falsewhile循环不会执行任何代码。
  • 使用while时要小心无限循环,确保循环条件最终能变为false

5. do-while 循环

do-while循环与while循环类似,区别在于do-while会先执行一次循环体,然后再检查条件。

基本语法:
javascript">do {// 循环体
} while (condition);
示例:
javascript">let count = 0;
do {console.log(count);  // 输出 0 1 2 3 4count++;
} while (count < 5);

6. break 和 continue 的使用

6.1 break

break语句用于跳出循环switch-case语句块,通常在满足某个条件时使用,跳出当前的循环或代码块。

示例:
javascript">for (let i = 0; i < 10; i++) {if (i === 5) {break;  // 当 i 等于 5 时跳出循环}console.log(i);
}

输出:

0
1
2
3
4
6.2 continue

continue语句用于跳过当前循环的剩余部分,直接进入下一次循环迭代。它不会终止整个循环,而是跳过当前循环中的其余代码,继续执行下一次循环。

示例:
javascript">for (let i = 0; i < 5; i++) {if (i === 2) {continue;  // 当 i 等于 2 时跳过当前循环}console.log(i);
}

输出:

0
1
3
4

总结

  • if-else:用于条件判断,决定执行哪段代码。
  • switch-case:用于多条件选择,尤其适用于固定值判断。
  • for:用于已知次数的循环,通常用于遍历数组或固定次数的任务。
  • while:用于在未知次数的情况下执行循环,直到条件不再满足。
  • break:用于跳出当前循环或switch语句块。
  • continue:用于跳过当前循环的剩余部分,进入下一次迭代。

掌握这些控制结构和语句的使用,可以使你在编写代码时更加灵活和高效,能够应对各种复杂的逻辑需求。在实际开发中,合理地选择控制结构将直接影响代码的可读性和执行效率。


http://www.ppmy.cn/devtools/152159.html

相关文章

js高阶-监听对象的操作

控制与监听对象的行为 需求:监听对象中的属性设置与访问的过程 Object.defineProperty() 缺点 设计初衷是设置属性描述符,监听更加丰富的操作比如新增属性,删除操作是无能为力的 // 1.监听对象的某个属性的操作Object.defineProperty(obj,name,{set:function(val){console.…

结合帧级边界检测和深度伪造检测,定位部分伪造音频攻击中的篡改区域

Integrating frame-level boundary detection and deepfake detection for locating manipulated regions in partially spoofed audio forgery 摘要&#xff1a; 部分伪造音频是一种深度伪造的变体&#xff0c;它通过引入伪造或外部来源的善意音频片段来操纵音频语句&#xf…

Ubuntu升级Linux内核教程

本文作者CVE-柠檬i: CVE-柠檬i-CSDN博客 本文使用的方法是dpkg安装&#xff0c;目前版本为5.4.0-204&#xff0c;要升级成5.8.5版本 下载 下载网站&#xff1a;https://kernel.ubuntu.com/mainline/ 在该网站下载deb包&#xff0c;选择自己想要升级的版本&#xff0c;这里是5…

支持selenium的chrome driver更新到132.0.6834.83

最近chrome释放新版本&#xff1a;132.0.6834.83 如果运行selenium自动化测试出现以下问题&#xff0c;是需要升级chromedriver才可以解决的。 selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only su…

高级Python Web开发:FastAPI的前后端集成与API性能优化

高级Python Web开发&#xff1a;FastAPI的前后端集成与API性能优化 目录 &#x1f6e0;️ 前后端集成的基本原理与实践&#x1f680; FastAPI的API设计与实现&#x1f4c8; API性能测试与负载测试 &#x1f4ca; 使用Locust进行API性能测试&#x1f4a5; 使用Apache JMeter进…

快速搭建深度学习环境(Linux:miniconda+pytorch+jupyter notebook)

本文基于服务器端环境展开&#xff0c;使用的虚拟终端为Xshell。 miniconda miniconda是Anaconda的轻量版&#xff0c;仅包含Conda和Python&#xff0c;如果只做深度学习&#xff0c;可使用miniconda。 [注]&#xff1a;Anaconda、Conda与Miniconda Conda&#xff1a;创建和管…

基于Ubuntu22.04安装SVN服务器

基于Ubuntu22.04安装SVN服务器 1.安装SVN服务器2.修改SVN服务器版本库目录3.调整SVN配置4.重启SVN服务5.安装TortoiseSVN 1.安装SVN服务器 确认uubuntu是否已经安装了SVN命令&#xff0c;如果没安装&#xff0c;使用对应的命令进行安装 svn //查看命令是否存在 s…

Mysql 主从复制原理及其工作过程,配置一主两从实验

主从原理&#xff1a;MySQL 主从同步是一种数据库复制技术&#xff0c;它通过将主服务器上的数据更改复制到一个或多个从服务器&#xff0c;实现数据的自动同步。 主从同步的核心原理是将主服务器上的二进制日志复制到从服务器&#xff0c;并在从服务器上执行这些日志中的操作…