ESLint提示需将箭头函数赋值后再导出为默认模块的原因
这个警告来自ESLint的import/no-anonymous-default-export规则,它属于最佳实践约束,并非JavaScript语法层面的错误——ES6原生语法本身是允许直接默认导出匿名箭头函数的。
规则之所以限制这种写法,是因为直接导出未赋值的匿名箭头函数存在三个明显的缺陷:
- 调试成本高:运行时报错的堆栈追踪中,匿名函数只会显示
anonymous标记,不会携带具体的函数标识,定位问题的效率会远低于具名函数。 - 代码可读性差:其他开发者阅读导出逻辑、或是使用IDE的代码提示功能时,无法第一时间获取该函数的功能语义,需要额外阅读函数内部逻辑才能判断用途。
- 维护成本高:如果后续需要在当前模块内部调用这个导出的函数,匿名导出的写法无法直接复用,必须额外赋值给变量才能内部引用,反而会增加冗余代码。
符合规则要求的写法参考:
// 先将箭头函数赋值给具名变量,再做默认导出 const handleBizLogic = () => { // 函数逻辑 }; export default handleBizLogic;
如果确认不需要遵守该最佳实践,也可以在ESLint配置中关闭import/no-anonymous-default-export规则,或是针对单个文件添加规则忽略注释即可。
内容的提问来源于stack exchange,提问作者Hayk Sahakyan
相关产品推荐
相关产品推荐

