JavaScript 中的 forEach() 方法

news/2026/1/27 13:00:17/文章来源:https://www.cnblogs.com/chenlight/p/19537922

一、forEach() 是什么?

 
forEach() 是 JavaScript 数组的内置方法,用于遍历数组的每一个元素,并对每个元素执行你指定的回调函数。它的核心特点是:
 
  • 遍历过程中无法被中断(不能用 break/continue,只能通过抛出异常终止);
  • 没有返回值(默认返回 undefined),不会改变原数组(除非你在回调里主动修改);
  • 回调函数会接收 3 个参数(后两个可选):当前元素、当前索引、原数组。
 

二、基本语法

数组.forEach(function(currentValue, index, array) {// 对当前元素的操作逻辑
}, thisArg); // thisArg 可选,指定回调函数中 this 的指向
参数说明:
 
  • currentValue:当前正在遍历的数组元素(必选);
  • index:当前元素的索引(可选);
  • array:调用 forEach() 的原数组(可选);
  • thisArg:可选,回调函数中 this 要指向的对象(如果省略,非严格模式下 this 指向全局对象,严格模式下为 undefined)。
 

三、基础使用示例

 

1. 遍历数组并打印每个元素

const fruits = ['苹果', '香蕉', '橙子'];// 基础用法:只使用当前元素
fruits.forEach(function(fruit) {console.log(fruit);
});
// 输出:
// 苹果
// 香蕉
// 橙子

2. 结合索引使用

const nums = [10, 20, 30];nums.forEach((num, index) => {console.log(`索引 ${index} 的值是:${num}`);
});
// 输出:
// 索引 0 的值是:10
// 索引 1 的值是:20
// 索引 2 的值是:30

3. 计算数组元素总和

const scores = [85, 90, 78, 95];
let total = 0;scores.forEach(score => {total += score; // 累加每个元素到total
});console.log('总分:', total); // 输出:总分:348

四、注意事项

 
  1. 无法中断遍历forEach() 不支持 break/continue,如果想提前终止遍历,只能抛出异常(不推荐),此时可以考虑用 for 循环或 some()/every()
try {[1,2,3,4].forEach(num => {if (num === 3) throw new Error('终止遍历');console.log(num);});
} catch (e) {if (e.message !== '终止遍历') throw e; // 只捕获自定义的终止异常
}
// 输出:1 2

2、遍历空元素forEach() 会跳过数组的空元素(但不会跳过 undefined/null);

const arr = [1, , 3]; // 第二个元素是空
arr.forEach(item => console.log(item)); // 输出:1 3

3、异步操作问题forEach() 不支持异步回调的 “等待”,如果回调里有 async/await,遍历不会按顺序等待异步操作完成;

// 错误示例:不会等待每个延时完成
[1,2,3].forEach(async num => {await new Promise(resolve => setTimeout(resolve, 1000));console.log(num);
});
// 正确做法:用 for...of 循环
async function test() {for (const num of [1,2,3]) {await new Promise(resolve => setTimeout(resolve, 1000));console.log(num);}
}
test(); // 每隔1秒输出 1、2、3

总结

 
  1. forEach() 是数组遍历的基础方法,核心作用是对每个元素执行回调,无返回值;
  2. 关键限制:无法中断遍历、不支持异步等待,需根据场景选择替代方案(for 循环、some()/every()for...of);
  3. 回调函数的核心参数是 “当前元素”,索引和原数组为可选,可灵活满足不同遍历需求。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1224084.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI学习01--WSL 显卡直通

安装wsl ubuntu 这里就不多说了,都一样 显卡直通 安装 CUDA 工具包(仅工具链,不含驱动) #下载 NVIDIA 官方的 CUDA 密钥环包 wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.1…

导师严选2026 AI论文平台TOP9:专科生毕业论文写作全攻略

导师严选2026 AI论文平台TOP9:专科生毕业论文写作全攻略 2026年专科生论文写作工具测评:选对平台,事半功倍 随着人工智能技术的不断进步,AI论文平台已成为越来越多专科生撰写毕业论文的重要辅助工具。然而,面对市场上琳…

还原论泛化,就是伪共识

“还原论泛化就是伪共识”这一论断,精准地揭示了当前科学哲学和复杂系统研究中的一个核心批判。公开资料显示,这一观点具有深刻的洞察力,它指出了当一种有效的方法论被过度延伸、超越其有效边界时,会如何异化为阻碍…

2026年度河北化学品防爆冰箱费用分析,口碑好的生产商盘点

2025年工业安全存储需求持续升级,防爆冰箱已成为化工、制药、实验室等场景保障危险物品存储安全的核心设备。无论是单温防爆冰箱的精准温控、化学品防爆冰箱的安全适配,还是不锈钢防爆冰箱的耐腐蚀性能,优质供应商的…

分析广告用铝塑板材怎么选,哪家性价比高的厂家靠谱?

对于广告行业从业者而言,选择合适的广告用铝塑板材直接关系到终成品的呈现效果与客户满意度,而口碑好的铝塑板和售后完善的铝塑板更是他们在采购时的核心诉求。那么,究竟什么样的广告用铝塑板材才能称得上口碑好?售…

说说深圳消防工程施工公司哪个好,推荐几家靠谱又性价比高的

在深圳、广州等大湾区城市,企业在寻找消防工程服务时,常常会陷入选择困境,比如消防工程施工公司哪个好?消防工程设计公司哪家专业?消防工程承包公司哪家靠谱?这些问题背后,是企业对消防工程合规性、专业性和安全…

【数据结构】败者树、B树、排序、查找、并查集 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

libero PolarFire soc SPI-DirectC 操作流程

libero PolarFire soc SPI-DirectC 操作流程参考文档: SPI-DirectC User Guide 源码下载:DirectC | Microchip Technology1、dp_top() 函数中 发送指令 读取 idcode , dp_G5M_read_idcode() , 确认芯片是否是 G5…

宜昌寒假作业印刷厂家怎么选择,口碑好的有几家?

在寒假作业印刷领域,选择老牌厂家、专业厂家或专业制造商是保障印刷质量与交付时效的关键。寒假作业作为学生假期学习的重要载体,不仅对内容准确性要求极高,印刷品质、纸张安全性、交付时间等细节也直接影响学校教学…

说说山东用户如何选购靠谱的高温隧道炉,江苏盐能正规厂商咋样?

在工业生产领域,隧道炉作为连续式高温处理设备,其性能直接影响产品质量与生产效率,因此选择专业可靠的供应商至关重要。许多企业在采购隧道炉时,常常被如何找到真正专业的隧道炉制造商高温隧道炉工厂的正规性如何判…

高频动效引发内存暴涨?

你可能遇到过这种场景: 测试同事说:“我就一直点按钮,点了五分钟,游戏内存从 800M 涨到 1.4G,然后啪一下闪退了。” 你一看代码: 没有疯狂 new 没有静态 List 疯狂堆对象 各种事件也都解绑了 GC 跑起来也正常 更离谱的是:只要人不操作,内存就相当稳定,一猛点就嗖嗖涨。…

CF透明亚克力有哪些颜色,钦洪广告产品耐用美观

随着广告制作、装修装饰行业对透明材料的需求日益精细化,CF透明亚克力凭借高透度、耐候性强、易加工等优势,成为众多企业的材料之一。但市场上CF透明亚克力品牌鱼龙混杂,质量参差不齐,不少客户在选择时都会遇到CF透…

高频粒子特效导致内存暴涨?5大原因解析

先把场景说清楚: 测试同学跑过来跟你说: “我就站在主城,原地疯狂搓技能键, 每按一次就放一个粒子特效。 连按五分钟,游戏内存从 800M 涨到 1.6G,然后直接闪退。” 你一看代码: 粒子都挂在预制体上,用完就回对象池或 Destroy 掉了 没有静态 List 暴涨 也没有忘记解绑事…

聊聊广州、惠州高压电力设备维保,哪家口碑好一目了然

2025年城市安全体系建设持续深化,高压电力设备维保已成为企业保障电力系统稳定运行、规避安全风险的核心支撑。无论是高压电力设备的日常巡检、故障抢修,还是电气消防一体化的安全保障,优质服务商的专业能力直接决定…

回调函数地狱、Promise-链式调用、

黑马程序员的B站课程:https://www.bilibili.com/video/BV1MN411y7pw?spm_id_from=333.788.videopod.episodes&vd_source=58cc5704c1268f656a4d51980dac6aa7&p=48 涉及回调地狱的代码示例,感觉还是非常具体易…

2026绵阳牙齿种植优质机构推荐:绵阳牙冠、绵阳牙齿根管治疗、绵阳牙齿矫正、绵阳牙齿美白、绵阳种植牙医院、绵阳补牙选择指南

2026绵阳牙齿种植优质机构推荐行业背景与筛选依据据《2026中国口腔医疗行业发展白皮书》数据显示,我国牙缺失人群数量持续增长,牙齿种植作为修复牙缺失的有效方式,市场需求逐年攀升。绵阳地区口腔医疗行业发展迅速,…

HTTP Error 500.30 - ASP.NET Core app failed to start

IIS部署后环境部署没问题报错 问题描述:HTTP Error 500.30 - ASP.NET Core app failed to start Common solutions to this issue: •The app failed to start •The app started but then stopped •The app started…

git记住账号密码

git记住账号密码记住账号密码 进入项目目录 git config --global credential.helper store 然后会生成一个本地文件用于记录用户名和密码,这个文件我们无需关心 再次git pull一下,会让输入用户名和密码。这次输入之后…

ClawdBot 详细安装使用指南

什么是 ClawdBot 2026年1月,一款名为 ClawdBot 的开源AI助手在技术社区引发了广泛关注。与我们熟悉的 ChatGPT、Claude 等聊天机器人不同,ClawdBot 代表了一个全新的范式:从被动的"对话式AI"进化为主动的"智能代理"&…

docker 容器参数LinkLocalIPv6Address 和 LinkLocalIPv6PrefixLen

文章目录一、什么是 IPv6 链路本地地址(Link-Local Address)?二、Docker 中的 LinkLocalIPv6Address 和 LinkLocalIPv6PrefixLen2.1、 LinkLocalIPv6Address2.2、 LinkLocalIPv6PrefixLen三、如何查看这两个字段?3.1、docker insp…