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

JavaScript 流程控制语句详解

流程控制语句是编程中用于控制代码执行顺序和逻辑的重要工具。JavaScript 提供了多种流程控制语句,主要包括条件语句和循环语句两大类。

一、条件语句

1. if 语句

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

2. if...else 语句

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

3. if...else if...else 语句

if (条件1) {// 条件1为真时执行的代码
} else if (条件2) {// 条件2为真时执行的代码
} else {// 所有条件都为假时执行的代码
}

4. switch 语句

switch (表达式) {case 值1:// 表达式等于值1时执行的代码break;case 值2:// 表达式等于值2时执行的代码break;default:// 表达式不等于任何case值时执行的代码
}

二、循环语句

1. for 循环

for (初始化; 条件; 增量) {// 循环体代码
}// 示例
for (let i = 0; i < 5; i++) {console.log(i);
}

2. while 循环

while (条件) {// 循环体代码
}// 示例
let i = 0;
while (i < 5) {console.log(i);i++;
}

3. do...while 循环

do {// 循环体代码
} while (条件);// 示例
let i = 0;
do {console.log(i);i++;
} while (i < 5);

4. for...in 循环 (用于遍历对象属性)

for (变量 in 对象) {// 循环体代码
}// 示例
const person = {name: "John", age: 30};
for (let key in person) {console.log(key + ": " + person[key]);
}

5. for...of 循环 (ES6新增,用于遍历可迭代对象)

for (变量 of 可迭代对象) {// 循环体代码
}// 示例
const arr = [1, 2, 3];
for (let value of arr) {console.log(value);
}

三、控制循环的特殊语句

1. break 语句

// 立即退出整个循环
for (let i = 0; i < 10; i++) {if (i === 5) {break; // 当i等于5时退出循环}console.log(i);
}

2. continue 语句

// 跳过当前迭代,继续下一次循环
for (let i = 0; i < 10; i++) {if (i === 5) {continue; // 跳过i等于5的这次循环}console.log(i);
}

3. label 语句 (可与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}`);}
}

四、三元运算符 (条件运算符)

条件 ? 表达式1 : 表达式2;// 示例
let age = 20;
let status = age >= 18 ? "成年人" : "未成年人";
console.log(status); // 输出"成年人"

五、空值合并运算符 (??) (ES2020新增)

// 当左侧为null或undefined时返回右侧值
let value = null ?? "默认值";
console.log(value); // 输出"默认值"

六、可选链操作符 (?.) (ES2020新增)

// 安全访问嵌套对象属性
const user = {profile: {name: "John"}
};
console.log(user?.profile?.name); // "John"
console.log(user?.address?.street); // undefined而不是报错

这些流程控制语句是JavaScript编程的基础,合理使用它们可以构建出各种复杂的程序逻辑。

http://www.lryc.cn/news/621501.html

相关文章:

  • 稳定且高效:GSPO如何革新大型语言模型的强化学习训练?
  • SpringCloud -- Nacos详细介绍
  • 跨网络 SSH 访问:借助 cpolar 内网穿透服务实现手机远程管理 Linux
  • 搭建前端开发环境 安装nvm nodejs pnpm 配置环境变量
  • Spark03-RDD01-简介+常用的Transformation算子
  • SQL:生成日期序列(填补缺失的日期)
  • 完整技术栈分享:基于Hadoop+Spark的在线教育投融资大数据可视化分析系统
  • 【Docker】关于hub.docker.com,无法打开,国内使用dockers.xuanyuan.me搜索容器镜像、查看容器镜像的使用文档
  • 关于截屏时实现游戏暂停以及本地和上线不同步问题
  • Java研学-SpringCloud(四)
  • Flink Stream API 源码走读 - keyBy
  • 转换一个python项目到moonbit,碰到报错输出:编译器对workflow.mbt文件中的类方法要求不一致的类型注解,导致无法正常编译
  • Vue响应式系统在超大型应用中的性能瓶颈
  • 中年海尔,是时候押注新方向了
  • 训练大模型的前提:数据治理工程:从原始数据到高质量语料的系统化治理实践
  • 抽奖程序web程序
  • 小迪安全v2023学习笔记(六十二讲)—— PHP框架反序列化
  • 实战 AI8051U 音视频播放:USART-SPI→DMA-P2P→SPI+I2S 例程详解
  • Redis 实用型限流与延时队列:从 Lua 固定/滑动窗口到 Streams 消费组(含脚本与压测)
  • 大华相机RTSP无法正常拉流问题分析与解决
  • (Arxiv-2025)Stand-In:一种轻量化、即插即用的身份控制方法用于视频生成
  • openwrt增加自定义网页
  • 基于asp.net#C##VUE框架的独居老人物资配送系统的设计与实现#sql server#visual studio
  • 国内多光谱相机做得好的厂家有哪些?-多光谱相机品牌厂家
  • 8月4日实训考察:重庆五一职院走进成都国际影像产业园
  • Flink面试题及详细答案100道(1-20)- 基础概念与架构
  • 基于.net、C#、asp.net、vs的保护大自然网站的设计与实现
  • Vue3中的ref与reactive全面解析:如何正确选择响应式声明方式
  • java 策略模式 demo
  • 基于微信小程序的家教服务平台的设计与实现/基于asp.net/c#的家教服务平台/基于asp.net/c#的家教管理系统