在Javascript中调用另一个函数中的函数

在Javascript中调用另一个函数中的函数,javascript,function,module,scope,Javascript,Function,Module,Scope,我已经读了一些关于这个的答案,但似乎没有什么有用的 我在React Redux Google Maps项目中有一个模块,导出如下函数: export default function(google, map, store) { // Main module functionality } 此函数被导入myinitMap模块,并使用google、map和store调用。因此,此功能能够与地图交互,例如创建谷歌地图标记、多段线等 在这个函数中,我创建了一个helper函数来清除映射。我可以通过

我已经读了一些关于这个的答案,但似乎没有什么有用的

我在React Redux Google Maps项目中有一个模块,导出如下函数:

export default function(google, map, store) {
  // Main module functionality
}
此函数被导入my
initMap
模块,并使用
google
map
store
调用。因此,此功能能够与地图交互,例如创建谷歌地图标记、多段线等

在这个函数中,我创建了一个helper函数来清除映射。我可以通过引用渲染对象并调用它们的方法
.setMap(null)
(根据谷歌地图的API文档)来实现这一点。但是,我想导出这个helper函数,这样我就可以在React组件中导入它,并将其绑定到
onClick
处理程序

我知道我不能从导出的函数中导出助手函数。我也不能直接调用helper函数。我也不能将helper函数带到主函数之外(即它们在同一范围内),因为这样它就无法访问
google
map
store
变量

我认为唯一可行的解决方案是重新构造main(默认导出)函数以返回一个对象:

{
  main: main,
  helper: helper
}
其中,
main
和helper是子函数。这样,两个子函数都可以访问
google
map
、和
store
变量,这些变量将在范围内

即:


这是否可行/不好的做法?

如果这两个函数不密切相关,那么将函数存储在不同的文件中并同时导入就更有意义了

如果它们之间的关系更密切(这里似乎是这样),则可以将它们作为类的静态方法存储在中,然后导出该类。此选项将有助于将相关函数组织到helper类的方法中,并且可以简单地完成工作

export default class {
  static main() {
    // Main module functionality
  }

  static helper() {
    // Helper module functionality
  }
}

只是澄清一下,类解决方案在概念上与对象解决方案非常相似,对吗?选择其中一个有什么好处/成本吗?例如,
.main()
vs
.main()
。它们确实非常相似,但类的解决方案较短,并且更易于编写和读取,特别是当您将许多函数分组而不是仅将两个函数分组时。无论你选择哪一个都取决于你。我一直在试验你的建议(即
实现),但面临一些问题。我无法从
static main()
设置属性(无法分配给函数类的只读属性“”。但是,如果我使用
new
关键字进行实例化,我将无法访问静态方法。问题是我需要在方法之间共享变量,这意味着我需要将它们设置为类属性。
export default class {
  static main() {
    // Main module functionality
  }

  static helper() {
    // Helper module functionality
  }
}