当前位置: 首页 > news >正文

JavaScript 中的流程控制语句详解

流程控制语句是编程语言中用于控制程序执行流程的结构。JavaScript 提供了多种流程控制语句,可以分为以下几类:

1. 条件语句

1.1 if 语句

最基本的条件判断结构:

if (condition) {// 当条件为真时执行的代码
}

1.2 if...else 语句

if (condition) {// 当条件为真时执行的代码
} else {// 当条件为假时执行的代码
}

1.3 if...else if...else 语句

多条件判断:

if (condition1) {// 当condition1为真时执行
} else if (condition2) {// 当condition2为真时执行
} else {// 当所有条件都为假时执行
}

1.4 三元运算符 (?:)

简洁的条件表达式:

let result = condition ? value1 : value2;

1.5 switch 语句

多分支选择结构:

switch (expression) {case value1:// 当expression等于value1时执行break;case value2:// 当expression等于value2时执行break;default:// 当没有匹配的case时执行
}

注意:每个case后面通常需要加break,否则会继续执行下一个case(称为"fall-through")。

2. 循环语句

2.1 for 循环

for (initialization; condition; finalExpression) {// 循环体
}

示例:

for (let i = 0; i < 5; i++) {console.log(i);
}

2.2 while 循环

先判断条件,再执行循环体:

while (condition) {// 循环体
}

2.3 do...while 循环

先执行一次循环体,再判断条件:

do {// 循环体
} while (condition);

2.4 for...in 循环

遍历对象的可枚举属性:

for (let key in object) {// 使用object[key]访问属性值
}

2.5 for...of 循环 (ES6)

遍历可迭代对象(如数组、字符串、Map、Set等)的值:

for (let value of iterable) {// 使用value
}

3. 跳转语句

3.1 break 语句

立即退出循环或switch语句:

while (true) {if (someCondition) {break; // 退出循环}
}

3.2 continue 语句

跳过当前循环迭代,进入下一次迭代:

for (let i = 0; i < 10; i++) {if (i % 2 === 0) {continue; // 跳过偶数}console.log(i); // 只打印奇数
}

3.3 return 语句

从函数中返回值并退出函数:

function sum(a, b) {return a + b;
}

3.4 throw 语句

抛出异常:

if (errorCondition) {throw new Error('Something went wrong');
}

3.5 try...catch...finally 语句

异常处理:

try {// 可能出错的代码
} catch (error) {// 出错时执行的代码console.error(error);
} finally {// 无论是否出错都会执行的代码
}

4. 标签语句

可以与break和continue配合使用,用于跳出多层循环:

outerLoop: for (let i = 0; i < 3; i++) {innerLoop: for (let j = 0; j < 3; j++) {if (i === 1 && j === 1) {break outerLoop; // 直接跳出外层循环}console.log(`i=${i}, j=${j}`);}
}

5. 现代JavaScript中的流程控制

5.1 可选链操作符 (?. - ES2020)

安全访问嵌套属性:

const street = user?.address?.street;

5.2 空值合并运算符 (?? - ES2020)

提供默认值:

const value = input ?? 'default';

5.3 逻辑赋值运算符 (ES2021)

// 逻辑或赋值
a ||= b; // 等同于 a = a || b// 逻辑与赋值
a &&= b; // 等同于 a = a && b// 空值合并赋值
a ??= b; // 等同于 a = a ?? b

最佳实践

  1. 对于简单的条件判断,优先使用三元运算符而不是if...else

  2. 遍历数组时优先使用for...of而不是for...in

  3. 避免过深的嵌套,可以使用早期返回(early return)来简化代码

  4. 在switch语句中不要忘记break

  5. 使用可选链和空值合并运算符简化代码

掌握这些流程控制语句是编写高效、可读性强的JavaScript代码的基础。

http://www.xdnf.cn/news/1242523.html

相关文章:

  • 3.JVM,JRE和JDK的关系是什么
  • 第二十四天(数据结构:栈和队列)队列实践请看下一篇
  • SQL注入SQLi-LABS 靶场less39-50详细通关攻略
  • 基于实时音视频技术的远程控制传输SDK的功能设计
  • 【ECCV2024】AdaCLIP:基于混合可学习提示适配 CLIP 的零样本异常检测
  • [GESP202306 四级] 2023年6月GESP C++四级上机题超详细题解,附带讲解视频!
  • 刷题记录0804
  • ref和reactive的区别
  • 8位以及32位的MCU如何进行选择?
  • ArrayDeque双端队列--底层原理可视化
  • Redis 常用数据结构以及单线程模型
  • LeetCode 140:单词拆分 II
  • Array容器学习
  • app-1
  • 优选算法 力扣 11. 盛最多水的容器 双指针降低时间复杂度 贪心策略 C++题解 每日一题
  • Javascript面试题及详细答案150道之(031-045)
  • python包管理器uv踩坑
  • 力扣面试150题--加一
  • PCL统计点云Volume
  • ArcGIS的字段计算器生成随机数
  • 配置Mybatis环境
  • 【多智能体cooragent】CoorAgent 系统中 5 个核心系统组件分析
  • 一起学springAI系列一:流式返回
  • 【实战】Dify从0到100进阶--中药科普助手(1)
  • 嵌入式硬件中三极管原理分析与控制详解
  • 零售消费行业研究系列报告
  • 微帧GPU视频硬编优化引擎:面向人工智能大时代的AI算法与硬编协同优化方案
  • [特殊字符]️ 整个键盘控制无人机系统框架
  • 【AI 加持下的 Python 编程实战 2_13】第九章:繁琐任务的自动化(中)——自动批量合并 PDF 文档
  • 【银河麒麟服务器系统】自定义ISO镜像更新内核版本