You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ESLint报no-sequences逗号使用异常 连续数组forEach调用报错疑问

问题根因

这不是ESLint的bug,是JavaScript**自动分号插入(ASI)**规则导致的语法解析歧义:
两段相邻的数组方法调用没有分号分隔时,JS引擎不会自动在第一个forEach末尾插入分号,而是会把两段代码合并解析为连续表达式:

const full = {};

["firstname", "lastname", "spouse"].forEach(key => {
})["cellphone", "phone"].forEach(key => {
})

此时JS会将第一个forEach的返回值(undefined)后的["cellphone", "phone"]识别为属性访问操作,方括号内部的"cellphone", "phone"会被解析为逗号运算符构成的序列表达式,最终取最后一个值"phone",相当于尝试执行undefined["phone"].forEach(...),这个解析过程中出现的序列表达式正好触发了no-sequences规则的校验。

修复方案

有两种常用修复方式:

  1. 主动在第一个forEach语句末尾补加分号,阻断错误的合并解析:
const full = {};

["firstname", "lastname", "spouse"].forEach(key => {
}); // 末尾添加分号

["cellphone", "phone"].forEach(key => {
})
  1. 如果你遵循不写分号的代码风格,可以在所有以[、(、模板字符串反引号开头的语句前主动加前置分号规避ASI坑:
const full = {};

["firstname", "lastname", "spouse"].forEach(key => {
})

;["cellphone", "phone"].forEach(key => { // 行首加前置分号
})

内容的提问来源于stack exchange,提问作者Abraham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 20:24:02