【问题标题】:How to use function declared in different JS file using jQuery getScript?如何使用jQuery getScript在不同的JS文件中声明的函数?
【发布时间】:2015-02-13 12:12:51
【问题描述】:

我有两个 JS 文件。一个称为 common.js,它使用 $.getScript 将其他文件包含在我的 js 代码中。部分包含如下所示:

jQuery.getScript(js_path + "table.js", function(){
  generateTable(chartData, dataTypes);
});

此文件 (common.js) 还包含函数 compare(a, b)。

现在,第二个(table.js)声明了不同的函数,它使用第一个文件中的比较函数。像这样的:

function someName() {
  var a = 2, 
      b = 5;
  var test = compare(a, b);
  return test;
}

当我运行它给我的代码时:

未捕获的引用错误:未定义比较

如何使用第一个文件中的函数。

【问题讨论】:

  • 这里是例子take a look
  • 您是否有特殊原因需要使用 getScript 而不是简单地包含两个脚本?
  • @Luc 我必须将代码分成单独的文件以使其更清晰
  • @David 是的,但您可以放置​​多个脚本标签,而不是同时获取一个。除此之外,您显然在两个文件之间存在循环依赖关系,这使得它有点棘手。
  • 对,但是它们之间存在依赖关系,所以我必须使用它

标签: javascript jquery include getscript


【解决方案1】:

jQuery.getScript首先从服务器获取JS文件,然后执行。如果你想使用全局函数(看起来),你需要注意以下几点:

  • 您的compare 函数必须在table.js 文件执行之前声明。

  • compare 函数必须在 table.js 的全局命名空间中声明。

抱歉,没有更多信息,您只能得到这些。

如果你的主文件是这样的:

(function() {

   function compare(){...}

}());

那么compare函数没有在全局命名空间中声明。

【讨论】:

  • table.js 使用后如何声明比较函数?
【解决方案2】:

你检查过进口的顺序吗?具有“比较”方法的文件应该是第一个。它应该可以解决问题。

【讨论】:

  • 此比较函数在使用 getScript 的同一文件中声明,但在使用 getScript 函数之前
【解决方案3】:

如果只是为了分离代码,我建议跳过 getScript。

<script src="common.js"></script>
<script src="table.js"></script>
<script src="app.js"></script>

在通用功能变得通用的地方,您的表格内容进入表格。这样您就可以正确订购。这也清除了循环依赖,人们可能会通过将除“通用”部分之外的所有部分提取到某种形式的“应用程序”中来看到表是否依赖于依赖于表的通用部分的提示。

【讨论】:

  • 这没有回答 OP 的要求。
猜你喜欢
  • 2012-10-14
  • 1970-01-01
  • 2020-03-23
  • 2012-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多