函数传参改为对象解构时出现Duplicate declaration错误的原因及解决
问题解析与修正方案
错误原因
你碰到的「Duplicate declaration (arg1)」错误,并非标准JavaScript语法问题——ES6及以上版本完全支持{arg1}这种对象属性简写(等同于{arg1: arg1})。报错的核心原因是你使用的编译工具(如旧版Babel)或代码检查工具(如配置了过时规则的ESLint)对简写属性的解析存在bug,误将属性简写里的arg1识别为新的变量声明,和函数参数arg1产生了“重复声明”的误判。
修正方法
方法1:显式写出键值对(最直接)
放弃属性简写,把对象里的arg1改成完整的arg1: arg1,彻底避免工具误判,逻辑完全不变:
export function anotherFunction(arg1) { return { data: myFunc({ arg1: arg1, arg2: "foo" }), }; }
方法2:重命名函数参数
如果允许修改参数名,把anotherFunction的参数arg1改成其他名称(比如val1),规避命名冲突:
export function anotherFunction(val1) { return { data: myFunc({ arg1: val1, arg2: "foo" }), }; }
方法3:更新依赖工具
如果是工具版本过旧导致的兼容性问题,把Babel、ESLint等编译/检查工具升级到最新稳定版,它们对ES6语法的支持更完善,就能正确识别属性简写,不再报错误。
内容的提问来源于stack exchange,提问作者user1486133
相关产品推荐
相关产品推荐

