【问题标题】:Difference between using functions from outer-scope vs inner-scope? [duplicate]使用外部范围与内部范围的函数之间的区别? [复制]
【发布时间】:2019-11-26 02:54:20
【问题描述】:

export default 函数中使用外部作用域(下面的fooaFunctionFromOuterScope)和内部作用域(下面的baraFunctionFromInnerScope)的函数有什么区别?

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 感谢您清理此问题并将其标记为重复。我会仔细阅读其他答案。

标签: javascript es6-modules


【解决方案1】:

外部作用域的函数只会被创建一次。但是,每次父函数运行时都会创建内部作用域函数。内部函数虽然提供了某种形式的私有函数,因为它们不能从外部访问,并保持工作空间的清洁。这取决于您的品味和需求。

【讨论】:

    猜你喜欢
    • 2021-03-28
    • 2016-06-23
    • 2015-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多