foreach是javascript数组的遍历方法,执行回调函数但不返回新数组、不改变原数组;回调接收item、index、array三个参数;无法中断循环,适合副作用操作,不支持类数组对象直接调用。

JavaScript 中 forEach 是数组的内置方法,用于遍历数组中的每个元素,执行你提供的回调函数。它不返回新数组,也不改变原数组(仅用于“执行操作”,不能链式调用或中途跳出)。
基本语法和参数
forEach 接收一个回调函数作为必需参数,该函数会为数组中每个元素自动调用一次。回调函数默认接收三个参数:
-
当前元素(item):正在处理的数组项,比如
arr[0] - 索引(index):该项在数组中的位置(从 0 开始)
-
原数组(array):调用
forEach的那个数组对象(通常很少用到)
示例:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
colors.forEach((color, index) => {
console.log(`${index}: ${color}`);
});
// 输出:
// 0: red
// 1: green
// 2: blue
常见使用场景
适合做“副作用操作”,比如打印、修改 DOM、发送请求、推入其他数组等:
- 批量更新页面元素:
items.forEach(item => document.getElementById(item.id).textContent = item.name); - 收集信息到新结构:
const names = []; data.forEach(d => names.push(d.name));(注意:这里不如map直观) - 触发异步操作(但要注意:
forEach不等待 Promise,如需顺序执行请改用for...of或reduce)
不能中断或跳过
forEach 没有 break 或 continue,也无法通过 return 提前退出整个循环(只能结束当前轮次)。如果需要条件跳出,应改用 for 循环或 some/every:
- ❌ 错误写法:
arr.forEach(x => { if (x === target) return; doSomething(x); });(仍会继续遍历) - ✅ 替代方案:
for (const x of arr) { if (x === target) break; doSomething(x); }
兼容性和注意事项
forEach 在所有现代浏览器和 Node.js 中都支持(IE9+)。注意以下几点:
- 空数组调用
forEach不会执行回调 - 数组长度动态变化时,
forEach按初始长度遍历,新增元素不会被访问 - 不适用于类数组对象(如
arguments或NodeList),需先转成数组:Array.from(nodeList).forEach(...)或用扩展运算符[...nodeList].forEach(...)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










