javascript - ESLint 警告 - 在导出为模块默认值之前将箭头函数分配给变量

标签 javascript warnings eslint

当我尝试创建和导出这样的箭头函数时:

export default () => {};
我从 ESLint 得到这个警告:

Assign arrow function to a variable before exporting as module default


当然我可以将它分配给一个变量然后导出它。但是为什么我不能用其他方式呢?
导出箭头函数而不将其分配给某物有什么问题?

最佳答案

这不是错误。这是一个警告。所以你可以做到。但是,这不是好的做法。
事情是这样的:当你说 () => {} ,您正在声明一个没有名称的匿名函数。当你说 var foo = function() {}您正在声明一个匿名函数,然后将其作为值分配给 foo多变的。
这是一个很小的区别,但如果您关心编写易于重用和调试的代码,这很重要。
当你给函数命名您的调试器能够在调试 Pane 中为您正确标记它,但如果您声明一个匿名函数,您只会看到匿名函数。这在调试时可能会很痛苦,因此通过在容易的情况下(当您命名时)进行一些重复的工作,您可能会在以后调试时为自己(或其他阅读/使用您的代码的人)省去麻烦。
如果你确定你所做的是导出匿名函数,ESLint 的文档会告诉你 how to disable the error notification :

"import/no-anonymous-default-export": ["error", {
  "allowArray": false,
  "allowArrowFunction": false,
  "allowAnonymousClass": false,
  "allowAnonymousFunction": false,
  "allowCallExpression": true, // The true value here is for backward compatibility
  "allowLiteral": false,
  "allowObject": false
}]

关于javascript - ESLint 警告 - 在导出为模块默认值之前将箭头函数分配给变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68783347/

相关文章:

javascript - dijit/form/Select 在使用 Esri Javascript 3.7 的 Internet Explorer 中损坏

javascript - 单击添加行并从列表中选择1个选项时,我想获得总和值吗?

c - GCC 不会对从 void * 到 void ** 的隐式转换发出警告

javascript - 如何检查网站是否允许我用我的小书签注入(inject) Javascript?

javascript - 切换不在菜单中悬停

c - 我应该禁用 C 编译器签名/未签名不匹配警告吗?

c++ - 带有 int 和 UINT32 的警告 C4018,但不带有 int 和 UCHAR

javascript - eslint/prettier 在 html 标签中添加不需要的空间

javascript - ESLint ES6 Redux global-required Unexpected require();

javascript - 如何修复主入口 Browserify js 文件的 "no-unused-vars"?