【发布时间】:2019-11-26 02:54:20
【问题描述】:
在export default 函数中使用外部作用域(下面的foo 和aFunctionFromOuterScope)和内部作用域(下面的bar 和aFunctionFromInnerScope)的函数有什么区别?
const foo = () => //...
const aFunctionFromOuterScope = () => //...
export default function() {
const aFunctionFromInnerScope = () {
foo() // use foo function from outer scope
bar() // use bar function from inner scope
});
const bar = () => //...
//...
return {
aFunctionFromInnerScope ,
aFunctionFromOuterScope
};
}
我应该什么时候使用其中一种?
【问题讨论】:
-
我看不出这与模块或导出有什么关系。这与任何其他功能的区别相同。
-
@Bergi 对不起,你是对的。我想没有理由让一个函数超出这个默认导出函数的范围(除非我在文件中有其他导出并且想要使用相同的函数)?
-
将它们保留在外部的其他原因(除了您已经提到的可重用性之外)是清晰的分离和更好的性能/内存使用,如果它们不需要访问范围的话。
-
@Bergi 你能写一个为什么性能/内存更好的答案,以及为什么 fatih 的答案不正确(即“每次导出这个模块时都会创建内部范围函数”)。我会将您的问题标记为已接受。几句话就够了。
-
@Bergi 感谢您清理此问题并将其标记为重复。我会仔细阅读其他答案。