当前位置: 首页 > 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.lryc.cn/news/610439.html

相关文章:

  • 机器学习实战:逻辑回归深度解析与欺诈检测评估指标详解(二)
  • Redis缓存详解及常见问题解决方案
  • MySQL 基本操作入门指南
  • MCP进阶:工业协议与AI智能体的融合革命
  • 使用 SecureCRT 连接华为 eNSP 模拟器的方法
  • typeof和instanceof区别
  • Linux学习记录(八)文件共享
  • 认识pytorch与pytorch lightning
  • BackgroundTasks 如何巧妙驾驭多任务并发?
  • 我的创作纪念日____在 CSDN一年来的成长历程和收获
  • openvela之内存管理
  • Linux 磁盘管理与分区配置
  • VUE+SPRINGBOOT从0-1打造前后端-前后台系统-注册实现
  • 向量魔法:Embedding如何赋能大模型理解世界
  • Go语言select
  • Git基础玩法简单描述
  • 【LeetCode刷题集】--排序(一)
  • ICCV2025 Tracking相关paper汇总和解读(19篇)
  • ubuntu 20.04 C和C++的标准头文件都放在哪个目录?
  • windows双系统下ubuntu20.04安装教程
  • HTTPS有哪些优点
  • Jeston + TensorRT + Realsense D435i + ROS noetic + Yolo11 各版本模型目标检测
  • Flink CDC 介绍
  • Field and wave electromagnetics 复习
  • 正点原子阿波罗STM32F429IGT6移植zephyr rtos(四)---在独立的应用工程里使用MPU6050
  • 【Java】一篇详解HashMap的扩容机制!!
  • SparkSQL—sequence 函数用法详解
  • 四、Linux 的实用操作
  • wpf Image 转 90 度
  • 华为OD机考2025C卷 - 分配土地 (Java Python JS C++ C )