for循环核心是初始化、条件判断、更新三部分:初始化定义计数器(如let i = 0),条件控制是否继续(如i
for 循环是 JavaScript 中最常用、最灵活的循环结构,控制计数器和遍历数组的核心在于三部分表达式:初始化、条件判断、更新语句。掌握它们之间的配合逻辑,就能准确控制循环次数和访问顺序。
计数器怎么设、怎么变、怎么停
for 循环语法为 for (初始化; 条件; 更新),其中计数器通常在“初始化”中定义,在“更新”中修改,“条件”决定是否继续执行:
- 初始化一般写 let i = 0(推荐用 let,避免变量提升或作用域污染)
- 条件常用 i (如
arr.length),确保不越界- 更新常用 i++(每次加 1),也可写
i += 2、i--等实现步长变化或倒序遍历数组的标准写法
遍历数组本质就是用计数器作为索引,逐个读取 arr[i]:
const fruits = ['苹果', '香蕉', '橙子']; for (let i = 0; i <p>注意:数组索引从 0 开始,最大有效索引是 <strong>fruits.length - 1</strong>,所以条件必须是 <code>i ,不能写成 <code>i ,否则最后一轮会访问 <code>fruits[3]</code> → <code>undefined</code>。</code></code></p><div class="aritcle_card flexRow artxards"> <div class="artcardd flexRow"> <a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill7957" title="js2java"><img src="https://img.php.cn/upload/skill/000/000/081/179178140274370.jpg" alt="js2java" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a> <div class="aritcle_card_info flexColumn"> <a rel="nofollow" href="/xiazai/skill7957" title="js2java" class="overflowclass">js2java</a> <p class="overflowclass">JavaScript 到 Java 全栈翻译助手,专为前端开发者学习 Java 或快速实现后端业务逻辑而设计。当用户提到以下场景时必须使用此技能: - "帮我把这段 JS 代码转成 Java" - "用 Java 怎么写这个逻辑" - "我习惯用 JS 写,想翻译成 Java" - "教我 Java,我要写后端接...</p> </div> <a rel="nofollow" href="/xiazai/skill7957" title="js2java" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a> </div> </div><h3>常见变体与实用技巧</h3><p>根据需求调整三部分表达式,可轻松实现不同遍历方式:</p>
- 倒序遍历:初始化为
let i = arr.length - 1,条件为i >= 0,更新为i--- 跳着遍历(偶数索引):初始化
let i = 0,条件不变,更新写成i += 2- 从中间开始遍历:初始化
let i = Math.floor(arr.length / 2),适合处理后半段- 提前退出:在循环体内用
break终止;用continue跳过当前轮次容易出错的几个点
新手常因忽略细节导致逻辑错误或运行异常:
- 误把分号写成逗号(
for (let i=0, i → 语法错误)- 在循环内重复声明同名计数器(如
for (let i=0; ...); { let i = 10; }会报错:重复声明)- 修改了数组长度(如 push/pop),但没同步更新循环条件,可能漏项或多跑一轮
- 用
var声明计数器,在闭包中引发意外的共享变量问题(推荐统一用let)for 循环控制的关键不在语法多复杂,而在于理清“从哪开始、到哪结束、每轮怎么走”。只要三部分目标明确,数组遍历就清晰可控。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











