首页 > 解决方案 > 在 Javascript 中调用另一个函数中的函数

问题描述

我已经阅读了一些关于此的 SO 答案,但似乎没有任何用处。

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

export default function(google, map, store) {
  // Main module functionality
}

这个函数被导入到我的initMap模块中,并用googlemap和调用store。因此,此功能能够与地图交互,例如创建谷歌地图标记、折线等。

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

我知道我无法从导出的函数中导出辅助函数。我也不能直接调用辅助函数。我也不能将辅助函数带到主函数之外(即它们在同一范围内),因为它会失去对googlemapstore变量的访问权限。

我认为可能的唯一解决方案是我重组主(默认导出)函数以返回一个对象:

{
  main: main,
  helper: helper
}

wheremain和 helper 是子函数。这样,两个子函数都可以访问范围内的googlemapstore变量。

IE:

export default function(google, map, store) {
  function main() {
    // Main module functionality
  }

  function helper() {
    // Helper module functionality
  }

  return {
    main: main,
    helper: helper
  };
}

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

标签: javascriptfunctionmodulescope

解决方案


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

如果它们更密切相关,这似乎是这里的情况,您可以将它们存储为类的静态方法,然后导出类。此选项有助于将您的相关函数组织到帮助器类的方法中,并且可以简单地完成工作。

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

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

推荐阅读