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

JavaScript 循环语句全解析:选择最适合的遍历方式

循环是编程中处理重复任务的核心工具。JavaScript 提供了多种循环语句,每种都有其适用场景和独特优势。本文将深入解析 JavaScript 的 6 种核心循环语句,通过实际示例帮助你精准选择合适的循环方案。


一、基础循环三剑客

1. for 循环

经典索引控制

javascript

复制

下载

for (let i = 0; i < 5; i++) {console.log(`第 ${i} 次循环`);
}

特点

  • 精确控制循环次数

  • 支持索引访问

  • 适合已知长度的数组遍历

2. while 循环

条件优先循环

javascript

复制

下载

let count = 0;
while (count < 3) {console.log(count);count++;
}

特点

  • 先检查条件后执行

  • 适合不确定次数的循环

  • 警惕无限循环风险

3. do...while 循环

先斩后奏型

javascript

复制

下载

let x = 5;
do {console.log(x);  // 至少执行一次x++;
} while (x < 3);

特点

  • 无论条件如何至少执行一次

  • 适合必须初始化执行的场景


二、现代遍历利器

4. for...of 循环

可迭代对象专用

javascript

复制

下载

const colors = ['红', '绿', '蓝'];
for (const color of colors) {console.log(color);  // 直接获取元素值
}

优势

  • 支持数组/字符串/Map/Set

  • 避免索引操作错误

  • 可配合 break 中断循环

5. for...in 循环

对象属性遍历器

javascript

复制

下载

const phone = { brand: 'Xiaomi', model: '13' };
for (const key in phone) {console.log(`${key}: ${phone[key]}`);
}

注意

  • 遍历对象可枚举属性

  • 配合 hasOwnProperty 过滤原型属性

  • 不保证遍历顺序(ES6+ 已规范)


三、特殊循环技巧

6. 循环控制语句

灵活流程控制

javascript

复制

下载

// break 跳出整个循环
for (let i = 0; i < 10; i++) {if (i === 5) break;console.log(i);  // 0-4
}// continue 跳过当前迭代
let n = 0;
while (n < 5) {n++;if (n === 3) continue;console.log(n);  // 1,2,4,5
}

7. 嵌套循环优化

标签语句应用

javascript

复制

下载

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, j);}
}

四、循环方法对比指南

循环类型最佳场景可中断性索引访问对象支持
for精确控制次数的遍历
while条件驱动的未知次数循环
do...while必须执行一次的循环
for...of数组等可迭代对象
for...in对象属性遍历

五、最佳实践建议

  1. 优先选择语义化循环

    • 数组遍历用 for...of 代替传统 for

    • 对象遍历用 for...in + hasOwnProperty

  2. 性能关键场景用基础循环

    javascript

    复制

    下载

    // 缓存数组长度提升性能
    const arr = [/* 大数据数组 */];
    for (let i = 0, len = arr.length; i < len; i++) {// 处理逻辑
    }
  3. 避免在循环内创建函数

    javascript

    复制

    下载

    // 不推荐
    for (let i = 0; i < 5; i++) {setTimeout(() => console.log(i), 0);
    }// 推荐:使用块级作用域
    for (let i = 0; i < 5; i++) {(function(j) {setTimeout(() => console.log(j), 0);})(i);
    }

结语

掌握 JavaScript 循环语句的精髓在于理解每种结构的特性:

  • 传统循环:精确控制,性能优先

  • 现代遍历器:简洁安全,语义清晰

  • 对象遍历:专属方案,避免误用

相关文章:

JavaScript 循环语句全解析:选择最适合的遍历方式

循环是编程中处理重复任务的核心工具。JavaScript 提供了多种循环语句&#xff0c;每种都有其适用场景和独特优势。本文将深入解析 JavaScript 的 6 种核心循环语句&#xff0c;通过实际示例帮助你精准选择合适的循环方案。 一、基础循环三剑客 1. for 循环 经典索引控制 ja…...

MIT 6.S081 2020 Lab3 page tables 个人全流程

文章目录 零、写在前面1、关于页表2、RISC-V Rv39页表机制3、虚拟地址设计4、页表项设计5、访存流程6、xv6 的页表切换7、页表遍历 一、Print a page table1.1 说明1.2 实现 二、A kernel page table per process2.1 说明2.2 初始化 / 映射相关2.3 用户内核页表的创建和回收2.4…...

Oracle 通过 ROWID 批量更新表

Oracle 通过 ROWID 批量更新表 在 Oracle 数据库中&#xff0c;使用 ROWID 进行批量更新是一种高效的更新方法&#xff0c;因为它直接定位到物理行位置&#xff0c;避免了通过索引查找的开销。 ROWID 基本概念 ROWID 是 Oracle 数据库中每一行的唯一物理地址标识符&#xff…...

webpack 的工作流程

Webpack 的工作流程可以分为以下几个核心步骤&#xff0c;我将结合代码示例详细说明每个阶段的工作原理&#xff1a; 1. 初始化配置 Webpack 首先会读取配置文件&#xff08;默认 webpack.config.js&#xff09;&#xff0c;合并命令行参数和默认配置。 // webpack.config.js…...

tcpdump 的用法

tcpdump 是一款强大的命令行网络抓包工具&#xff0c;用于捕获和分析网络流量。以下是其核心用法指南&#xff1a; 一、基础命令格式 sudo tcpdump [选项] [过滤表达式]权限要求&#xff1a;需 root 权限&#xff08;使用 sudo&#xff09; 二、常用选项 选项说明-i <接口…...

Agent杂货铺

零散记录一些Agent相关的内容。不成体系&#xff0c;看情况是否整理 ReAct ReAct 是一种实践代理模型的高级框架&#xff0c;通过将大语言模型&#xff08;LLMs&#xff09;的推理和执行行动的能力结合起来&#xff0c;增强了它们在处理复杂任务时的决策能力、适应性和与外部…...

【Redis】Redis的主从复制

文章目录 1. 单点问题2. 主从模式2.1 建立复制2.2 断开复制 3. 拓扑结构3.1 三种结构3.2 数据同步3.3 复制流程3.3.1 psync运行流程3.3.2 全量复制3.3.3 部分复制3.3.4 实时复制 1. 单点问题 单点问题&#xff1a;某个服务器程序&#xff0c;只有一个节点&#xff08;只搞一个…...

第04章—技术突击篇:如何根据求职意向进行快速提升与复盘

经过上一讲的内容阐述后&#xff0c;咱们定好了一个与自身最匹配的期望薪资&#xff0c;接着又该如何准备呢&#xff1f; 很多人在准备时&#xff0c;通常会选择背面试八股文&#xff0c;这种做法效率的确很高&#xff0c;毕竟能在“八股文”上出现的题&#xff0c;也绝对是面…...

Quantum convolutional nerual network

一些问答 1.Convolution: Translationally Invariant Quasilocal Unitaries 理解&#xff1f; Convolution&#xff08;卷积&#xff09;&#xff1a; 在量子信息或量子多体系统中&#xff0c;"卷积"通常指一种分层、局部操作的结构&#xff0c;类似于经典卷积神经网…...

RL之ppo训练

又是一篇之前沉在草稿箱的文章&#xff0c;放出来^V^ PPO原理部分这两篇就够了&#xff1a; 图解大模型RLHF系列之&#xff1a;人人都能看懂的PPO原理与源码解读人人都能看懂的RL-PPO理论知识 那些你或多或少听过的名词 actor-critic: actor表示策略&#xff0c;critic表示价值…...

AI云防护真的可以防攻击?你的服务器用群联AI云防护吗?

1. 传统防御方案的局限性 静态规则缺陷&#xff1a;无法应对新型攻击模式&#xff08;如HTTP慢速攻击&#xff09;资源浪费&#xff1a;固定带宽采购导致非攻击期资源闲置 2. AI云防护技术实现 动态流量调度算法&#xff1a; # 智能节点选择伪代码&#xff08;参考群联防护…...

Docker封装深度学习模型

1.安装Docker Desktop 从官网下载DockerDesktop&#xff0c;安装。&#xff08;默认安装位置在C盘&#xff0c;可进行修改&#xff09; "D:\Program Files (x86)\Docker\Docker Desktop Installer.exe" install --installation-dir"D:\Program Files (x86)\Do…...

11、参数化三维产品设计组件 - /设计与仿真组件/parametric-3d-product-design

76个工业组件库示例汇总 参数化三维产品设计组件 (注塑模具与公差分析) 概述 这是一个交互式的 Web 组件&#xff0c;旨在演示简单的三维零件&#xff08;如带凸台的方块&#xff09;的参数化设计过程&#xff0c;并结合注塑模具设计&#xff08;如开模动画&#xff09;与公…...

4.4 os模块

os模块&#xff1a; chdir:修改工作路径 --- 文件所在位置的标识 getcwd():返回当前路径&#xff0c;如果修改了则显示修改后的路径 curdir:获取当前目录的表示形式 cpu_count():返回当前cpu的线程数 getppid(): 获取当前进程编号 getppid()&#xff1a;获取当前进程的父进…...

OpenAI 30 亿收购 Windsurf:AI 编程助手风口已至

导语: 各位开发者同仁、产品经理伙伴们,从2024年起,一场由AI驱动的研发范式革命已然来临。Cursor等AI代码编辑器凭借与大语言模型的深度集成,正以前所未有的态势挑战,甚至颠覆着IntelliJ、VS Code等传统IDE的固有疆域。根据OpenRouter的API使用数据,Anthropic的Claude 3.…...

材料创新与工艺升级——猎板PCB引领高频阻抗板制造革命

在5G通信、AI服务器和自动驾驶的推动下&#xff0c;高频电路对信号完整性的要求日益严苛。猎板PCB作为国内高端PCB制造的标杆企业&#xff0c;通过材料创新与工艺革新&#xff0c;实现了阻抗控制的突破性进展&#xff0c;为行业树立了新标杆。 1. 高频材料的突破 传统FR-4基材…...

协议路由与路由协议

协议路由”和“路由协议”听起来相似&#xff0c;但其实是两个完全不同的网络概念。下面我来分别解释&#xff1a; 一、协议路由&#xff08;Policy-Based Routing&#xff0c;PBR&#xff09; ✅ 定义&#xff1a; 协议路由是指 根据预设策略&#xff08;策略路由&#xff0…...

【linux】倒计时小程序、进度条小程序及其puls版本

小编个人主页详情<—请点击 小编个人gitee代码仓库<—请点击 linux系列专栏<—请点击 倘若命中无此运&#xff0c;孤身亦可登昆仑&#xff0c;送给屏幕面前的读者朋友们和小编自己! 目录 前言一、知识铺垫1. 回车换行2. 缓冲区 二、倒计时小程序1. 实现 三、进度条小…...

HTML难点小记:一些简单标签的使用逻辑和实用化

HTML难点小记&#xff1a;一些简单标签的使用逻辑和实用化 jarringslee 文章目录 HTML难点小记&#xff1a;一些简单标签的使用逻辑和实用化简单只是你的表象标签不是随便用的<div> 滥用 vs 语义化标签的本质嵌套规则的隐藏逻辑SEO 与可访问性的隐形关联 暗藏玄机的表单…...

FastAPI实现JWT校验的完整指南

在现代Web开发中&#xff0c;构建安全的API接口是开发者必须面对的核心挑战之一。随着FastAPI框架的普及&#xff0c;其异步高性能特性与Python类型提示的结合&#xff0c;为开发者提供了构建高效服务的强大工具。本文将深入探讨如何基于FastAPI实现JWT&#xff08;JSON Web To…...

物流无人机结构与载货设计分析!

一、物流无人机的结构与载货设计模块运行方式 1.结构设计特点 垂直起降与固定翼结合&#xff1a;针对复杂地形&#xff08;如山区、城市&#xff09;需求&#xff0c;采用垂直起降&#xff08;VTOL&#xff09;与固定翼结合的复合布局&#xff0c;例如“天马”H型无人机&am…...

Linux 常用命令集合

以下是一份 Linux 常用命令集合&#xff0c;涵盖文件操作、系统管理、网络管理、权限管理、进程管理等常见任务&#xff0c;并附上代码示例&#xff1a; 1. 文件与目录操作 命令作用示例ls列出目录内容ls -l&#xff08;详细列表&#xff09; ls -a&#xff08;显示隐藏文件&a…...

LoRA(Low-Rank Adaptation)原理详解

LoRA(Low-Rank Adaptation)原理详解 LoRA(低秩适应)是一种参数高效微调(Parameter-Efficient Fine-Tuning, PEFT)技术,旨在以极低的参数量实现大模型在特定任务上的高效适配。其核心思想基于低秩分解假设,即模型在适应新任务时,参数更新矩阵具有低秩特性,可用少量参…...

【MySQL】表空间结构 - 从何为表空间到段页详解

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;博客仓库&#xff1a;https://gitee.com/JohnKingW/linux_test/tree/master/lesson &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &…...

[特殊字符] 免税商品优选购物商城系统 | Java + SpringBoot + Vue | 前后端分离实战项目分享

一、项目简介 本项目为一款功能完备的 免税商品优选购物商城系统&#xff0c;采用 Java 后端 Vue 前端的主流前后端分离架构&#xff0c;支持用户、商家、管理员三类角色&#xff0c;满足商品浏览、下单、商家管理、后台运营等多项功能&#xff0c;适用于实际部署或作为毕业设…...

图像处理基础与图像变换

一、目的 通过本次实验&#xff0c;加深对数字图像的理解&#xff0c;熟悉MATLAB中的有关函数&#xff1b;应用DCT对图像进行变换&#xff1b;熟悉图像常见的统计指标&#xff0c;实现图像几何变换的基本方法。 二、内容与设计思想 1、实验内容&#xff1a;选择两幅图像&…...

《Effective Python》第1章 Pythonic 思维详解——深入理解 Python 条件表达式(Conditional Expressions)

《Effective Python》第1章 Pythonic 思维详解——深入理解 Python 条件表达式&#xff08;Conditional Expressions&#xff09; 在 Python 中&#xff0c;条件表达式&#xff08;conditional expressions&#xff09;提供了一种简洁的方式来在一行中实现 if/else 的逻辑。它…...

并发笔记-锁(一)

文章目录 1. 基本问题与锁的概念 (The Basic Idea)2. 锁的API与Pthreads (Lock API and Pthreads)3. 构建锁的挑战与评估标准 (Building A Lock & Evaluating Locks)4. 早期/简单的锁实现尝试及其问题 (Early/Simple Attempts)4.1 控制中断 (Controlling Interrupts)4.2 仅…...

【Bootstrap V4系列】学习入门教程之 组件-媒体对象(Media object)

Bootstrap V4系列 学习入门教程之 组件-媒体对象&#xff08;Media object&#xff09; 媒体对象&#xff08;Media object&#xff09;一、Example二、Nesting 嵌套三、Alignment 对齐四、Order 顺序五、Media list 媒体列表 媒体对象&#xff08;Media object&#xff09; B…...

ALSTOM D-984-0721 自动化组件

ALSTOM D-984-0721是一款高性能自动化组件&#xff0c;专为电力行业、石化行业和一般自动化应用的苛刻环境而设计。该型号旨在提供卓越的可靠性和精度&#xff0c;因其强大的输入/输出能力、耐用性和无缝集成能力而脱颖而出&#xff0c;成为现代工业自动化系统不可或缺的工具。…...