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

news/2025/1/19 22:41:44/文章来源:https://www.cnblogs.com/kevinbee/p/18680438

在编程中,流程控制是指控制代码执行顺序的机制。通过流程控制结构,我们可以根据不同的条件执行不同的代码块,实现逻辑判断、循环遍历和跳出循环等功能。常见的流程控制语句有: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.hqwc.cn/news/871893.html

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

相关文章

ELF2开发板(rk3588飞凌)

ELF2开发板(飞凌嵌入式) 开箱包裹内容打开包装,你可以看到以下物品一个绿联的usb3.0读卡器、sandisk的32g内存卡(太好了) rk3588 4g+32g emmc版本ELF2开发板 输出为12v 3A的电源适配器(和ipad的充电器外观好像)图1 外包装盒图2 开箱物品内容图3 ELF2开发板正面图4 ELF2开发…

抗沙箱方式列举

前言 研究过免杀的朋友们一定会碰到过自己的🐎今天还能用,明天就被秒的情况。这种情况大多数是被上传到沙箱然后被沙箱检测和分析发现是🐎,进而记录特征让咱们花好几天写的🐎直接废了。为了提高🐎的存活周期,咱们就需要抗沙箱这门技术。 未加抗沙箱 首先,作为演示我…

K-D树及其应用

K-D树及其应用 简介 在单个维度的范围搜索场景下,如:搜索创建时间最靠近某个日期的商品信息。可以通过遍历所有的商品信息,计算每个商品的创建日期的差值,得到差值最小的商品即可,这样每次查询的时间复杂度为 \(O(n)\);或者通过构造一个 BST,通过日期进行比较查询,这样…

基础动态规划讲解

(标题就叫这个吧,我也没什么主意了) 动态规划,要给这个这个东西下个定义,确实不太好下,他是一种基于状态来思考问题的算法思想 用来表示状态的话,那就是dp,(这么说好抽象),就直接说涉及动态规划的题目怎么处理吧 ,这个还是有步骤可行的,就按如下步骤操作 1.寻找子…

遗传算法个人入门笔记

先举一个简单的求解例子: 变量x,y 函数f(x,y) = (x-5)^2 + (y+3)^2 - 5 求最小值。 def test(x,y):return (x - 5)**2 + (y - 3)**2 - 5显然,这个函数在x=5,y=3时取最小值-5。现在我们尝试用遗传算法解决之。 遗传算法主要是模拟生物进化的过程,将每一个值视作一个生物,有…

excel快速定位到某一行

左上角输入框输入:A100定位到第100行

2024秋季学期 电子技术基础期末复习笔记

这期末也太难了吧,15*2,俩超级难的电路,直接给我算麻了电路分析模拟电路

【牛客训练记录】牛客周赛 Round 77

训练情况赛后反思 打一半吃饭去了,C题看到 ax+by=k 的问题,简单的扩欧exgcd没反应过来,简单数论还是不熟悉TAT,D题DSU计算联通块大小时 \(i\) 打成 \(a_i\) 疯狂 RE 被硬控了十几分钟 A题 输出题目所述的第几个字符串即可 #include <bits/stdc++.h> // #define int l…

LIS于LCS

LIS与LCS是动态规划中最常见的两种情况,LIS也就是最长上升子序列,而LCS是最长公共子序列。 在解决这个问题之前,先要明白为什么是序列,举个例子来说明,在数组 [1,2,3,4,5,6]中,[2,3,5]就是其子序列,也就是说,子序列其实就是数组中存在先后顺序,但不强调连续的子数组。…

层次分析法:数学建模

今天学习了层次分析法和数学建模,这里就简单写一下自己的学习新的,参考的资料是B站上的免费网课,老师讲的不错,可以去围观,学习,希望可以拿个奖。https://www.bilibili.com/video/BV1p14y1U7Nr/?spm_id_from=333.337.search-card.all.click 上面这里是链接。本文的大部分…

那些年我在 HL 集训做的题【某人别催了!】

某人别催了!!!Day 0 1.16 下午到 HL,居然还写了一道题? P8855 [POI2002] 商务旅行 LCA 板子。不理解当时为啥要写这个东东,可能是为了热热身吧。 Day 1 讲整体二分,但是没听懂。貌似是魔改版 CDQ...不管它。但是我似乎发现了一片新天地,一切的一切都从下面的一道题说起…

Mac 刷题环境配置

方便Mac 刷题,记录一些环境配置Mac 刷题环境配置 这篇博文主要记录自己为了更方便的在 Mac 上写算法题,主要是基于 Clion做的一些环境配置;有些操作其实在 Windows ,Linux 下也是通用的,如果看到的小伙伴也可以结合自己的情况参考。 Clion 插件 推荐一下这个插件 C/C++ Si…