当前位置: 首页 > 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.dtcms.com/a/314875.html

相关文章:

  • JS-第二十天-事件(二)
  • 股票的涨跌原理
  • Flink从Kafka读取数据的完整指南
  • ref和reactive的区别
  • 图的存储方式-邻接表
  • 燃气末端天然气加臭剂四氢噻吩监测方案
  • lwIP 代码解析:sys_arch.c
  • 从 0 到 1 构建高质量微调数据集:大模型落地的基石
  • 单向链表练习
  • Linux Shell:常用命令汇总
  • 邻近标记技术:研究蛋白互作的利器(一)
  • 论文Review LIO Multi-session Voxel-SLAM | 港大MARS出品!体素+平面特征的激光SLAM!经典必读!
  • 简要探讨大型语言模型(LLMs)的发展历史
  • 每天学一个Linux命令(38):vi/vim
  • 决策树(回归树)全解析:原理、实践与应用
  • Excel商业智能分析报表 【销售管理分析仪】
  • 编译 Paddle 遇到 flashattnv3 段错误问题解决
  • PostgreSQL——表的基本操作
  • 前端接入通义千问(各大模型接入方法类似)
  • 【Spring Boot 快速入门】六、配置文件
  • 15个命令上手Linux!
  • 回归分析:从数据类型到预测模型的核心逻辑
  • 8.4 打卡 DAY 33: 第一个神经网络 - MLP的构建与训练
  • 《时间之隙:内存溢出》
  • [自动化Adapt] 数据脱敏 | 文本替换/图像模糊 | 引擎热插拔 | 多队列并行处理
  • 网络资源模板--基于Android Studio 实现的消消乐游戏
  • ffmpeg下载windows教程
  • 高密度客流识别精度↑32%!陌讯多模态融合算法在智慧交通的实战解析
  • 模拟IC设计提高系列8-运算跨导放大器OTA Operational Transconduct Amplifiers
  • Cursor国产平替重磅开源!离线研发AI助手,拒绝云端受制于人