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


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

1. if-else 语句

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

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

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

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相比更简洁,尤其在有多个值需要判断时。

基本语法:
switch (expression) {case value1:// expression === value1 时执行的代码break;case value2:// expression === value2 时执行的代码break;default:// 如果没有匹配的 case 执行的代码
}
示例:
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循环用于重复执行一段代码,直到满足退出条件。它通常用于已知执行次数的场景。

基本语法:
for (initialization; condition; increment) {// 循环体
}
  • initialization:初始化部分,通常用于定义和初始化循环变量。
  • condition:条件表达式,判断是否继续执行循环。
  • increment:每次循环结束时,更新循环变量。
示例:
for (let i = 0; i < 5; i++) {console.log(i);  // 输出 0 1 2 3 4
}
扩展:for-infor-of
  • for-in:用于遍历对象的键(属性)。
  • for-of:用于遍历数组或其他可迭代对象的元素。
// 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循环用于在条件为真时反复执行一段代码,适用于循环次数不确定的情况,通常在开始前无法预知循环次数时使用。

基本语法:
while (condition) {// 循环体
}
示例:
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会先执行一次循环体,然后再检查条件。

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

6. break 和 continue 的使用

6.1 break

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

示例:
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语句用于跳过当前循环的剩余部分,直接进入下一次循环迭代。它不会终止整个循环,而是跳过当前循环中的其余代码,继续执行下一次循环。

示例:
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.rhkb.cn/news/4125.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

庄小焱——2024年博文总结与展望

摘要 大家好&#xff0c;我是庄小焱。岁末回首&#xff0c;2024 年是我在个人成长、博客创作以及生活平衡方面收获颇丰的一年。这一年的经历如同璀璨星辰&#xff0c;照亮了我前行的道路&#xff0c;也为未来的发展奠定了坚实基础。 1. 个人成长与突破 在 2024 年&#xff0c…

八大排序--冒泡排序

目录 什么是冒泡排序&#xff1f; 算法步骤 举例说明 代码实现&#xff08;java&#xff09; 什么是冒泡排序&#xff1f; 冒泡排序&#xff08;英语&#xff1a;Bubble sort&#xff09;是一种简单的排序算法。由于在算法的执行过程中&#xff0c;较小的元…

新阿里云买服务器配置需手动配置80端口

新买阿里云服务器需手动配置80&#xff0c;端口才可以访问nginx CentOS系统 安装nginx 1. 安装 Nginx yum install nginx 2. 启动 Nginx 服务 systemctl start nginx 3. 修改默认网页 cd /usr/share/nginx/ echo "666" >index.html cat index.html 访问ngin最后…

如何下载对应城市的地理json文件

这里采用的是阿里地图工具进行查找&#xff1a; DataV.GeoAtlas地理小工具系列 由阿里云DataV数据可视化团队出品,多年深耕数据可视化领域,数据大屏业务开拓者和领航者。致力用震撼而清晰的视觉语言,让更多人读懂大数据,受惠数据驱动的决策方式 第一步打开网站 &#xff1a; …

“libcudart,so.1 1.0“ loss解决方案

sudo find /usr/ -name libcudart.so.11.0 2 > /dev/null参考链接&#xff1a;1、https://stackoverflow.com/questions/70967651/could-not-load-dynamic-library-libcudart-so-11-0 2、https://blog.csdn.net/weixin_43786241/article/details/109203995

通过图形界面展现基于本地知识库构建RAG应用

1. 客户需求 快速完成概念验证(PoC)通过图形界面快速完成演示本地私有数据对比不同模型和成本&#xff0c;决定如何部署 2. 阿里云基于本地知识库构建RAG应用 参考方案&#xff1a; 百炼本地知识库方案 解决方案&#xff1a; FastAPI Gradio Llamaindex qwen-plus 主要三大…

安路FPGA开发工具TD:问题解决办法 及 Tips 总结

安路科技&#xff08;Anlogic&#xff09;是一家专注于高性能、低功耗可编程逻辑器件&#xff08;FPGA&#xff09;设计和生产的公司。其提供的开发工具TD&#xff08;TangDynasty&#xff09;是专门为安路FPGA系列产品设计的集成开发环境&#xff08;IDE&#xff09;。以下是对…

聚铭网络6款产品入选CCIA《网络安全专用产品指南》

近日&#xff0c;中国网络安全产业联盟CCIA正式发布《网络安全专用产品指南》&#xff08;第二版&#xff09;&#xff08;以下简称《指南》&#xff09;。聚铭网络凭借突出技术优势、创新能力以及市场积累&#xff0c;旗下安全产品成功入选防火墙、网络安全审计、日志分析、网…

渗透笔记1

第一天 工具&#xff1a;cs cobalt strike 4.9 / msf kali &#xff08;自带 Ubuntu&#xff09; cs cobalt strike 4.9&#xff1a;server-client server部署在云服务器上&#xff0c;client分别在各地&#xff0c;与server相连接&#xff1b;连接上后就可以共享上线主机。…

计算机网络 (51)鉴别

前言 计算机网络鉴别是信息安全领域中的一项关键技术&#xff0c;主要用于验证用户或信息的真实性&#xff0c;以及确保信息的完整性和来源的可靠性。 一、目的与重要性 鉴别的目的是验明用户或信息的正身&#xff0c;对实体声称的身份进行唯一识别&#xff0c;以便验证其访问请…

《Vue3 九》动画

Vue 提供了一些内置组件和对应的 API 来完成动画&#xff0c;利用它们可以方便地实现动画效果。 <transition> 内置组件&#xff1a; Vue 提供了 <transition> 内置组件&#xff0c;可以给任意元素或组件添加进入/离开时的动画效果。在条件渲染、动态组件、改变 …

人工智能之数学基础:线性代数中的线性相关和线性无关

本文重点 在线性代数的广阔领域中,线性相关与线性无关是两个核心概念,它们对于理解向量空间、矩阵运算、线性方程组以及人工智能等问题具有至关重要的作用。 定义与直观理解 当存在一组不全为0的数x1,x2,...,xn使得上式成立的时候,那么此时我们可以说向量组a1,a2...,an…

【王树森搜素引擎技术】相关性03:文本匹配(TF-IDF、BM25、词距)

链路上的相关性模型 召回海选 打分量&#xff1a;数万模型&#xff1a;文本匹配分数线性模型或双塔BERT模型 粗排 打分量&#xff1a;数千模型&#xff1a;双塔BERT&#xff0c;或单塔BERT模型&#xff08;交叉&#xff09; 精排 打分量&#xff1a;数百模型&#xff1a;单塔B…

owasp SQL 注入-03 (原理)

1: 先看一下注入界面: 点submit 后&#xff0c;可以看到有语法报错&#xff0c;说明已经起作用了: 报如下的错误: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near at line 1 2:…

项目实战--网页五子棋(游戏大厅)(3)

我们的游戏大厅界面主要需要包含两个功能&#xff0c;一是显示用户信息&#xff0c;二是匹配游戏按钮 1. 页面实现 hall.html <!DOCTYPE html> <html lang"ch"> <head><meta charset"UTF-8"><meta name"viewport"…

【Idea】编译Spring源码 read timeout 问题

Idea现在是大家工作中用的比较多的开发工具&#xff0c;尤其是做java开发的&#xff0c;那么做java开发&#xff0c;了解spring框架源码是提高自己技能水平的一个方式&#xff0c;所以会从spring 官网下载源码&#xff0c;导入到 Idea 工具并编译&#xff0c;但是发现build的时…

5 分钟复刻你的声音,一键实现 GPT-Sovits 模型部署

想象一下&#xff0c;只需简单几步操作&#xff0c;就能生成逼真的语音效果&#xff0c;无论是为客户服务还是为游戏角色配音&#xff0c;都能轻松实现。GPT-Sovits 模型&#xff0c;其高效的语音生成能力为实现自然、流畅的语音交互提供了强有力的技术支持。本文将详细介绍如何…

网络变压器的分类

网络变压器是局域网(LAN)中各级网络设备中必备的元件。它们的主要功能是传输数据&#xff0c;增强信号&#xff0c;并提供电气隔离&#xff0c;以防雷保护和匹配阻抗。网络变压器也被称为数据泵或网络隔离变压器。它们广泛应用于网络交换机、路由器、网卡、集线器等设备中。 网…

大数据时代的璀璨明珠:机器学习引领的智能应用革新与深度融合探索

欢迎大家阅读&#xff1a; 羑悻的小杀马特.-CSDN博客羑悻的小杀马特.擅长C/C题海汇总,AI学习,c的不归之路,等方面的知识,羑悻的小杀马特.关注算法,c,c语言,ubuntu,linux,数据结构领域.https://blog.csdn.net/2401_82648291?spm1010.2135.3001.5343 目录 技术前沿&#xff1a…

【C++】如何从源代码编译红色警戒2地图编辑器

【C】如何从源代码编译红色警戒2地图编辑器 操作视频视频中的代码不需要下载三方库&#xff0c;已经包含三方库。 一、运行效果&#xff1a;二、源代码来源及编程语言&#xff1a;三、环境搭建&#xff1a;安装红警2安装VS2022下载代码&#xff0c;源代码其实不太多&#xff0c…