【问题标题】:Importing javascript file multiple times on same page在同一页面上多次导入javascript文件
【发布时间】:2010-01-20 16:36:26
【问题描述】:

我有一个名为 pendingAjaxCallsCounter.js 的 javascript 文件,其中有一个变量“var pendingAjaxCalls”,当调用 js 文件中的各种方法时,该变量会递增/递减。

另外,我创建了一个自动化测试应用程序,它在与任何页面交互之前检查 pendingAjaxCalls 的值是否为 0。我想知道,如果给定页面要多次导入 js 文件;多 语句,这将如何影响我的变量“var pendingAjaxCalls”的值?

【问题讨论】:

  • 截至 2010 年 1 月 28 日,我可以说所有的答案都非常有助于提高我对 javascript 的理解,并为这个问题找到解决方案。谢谢大家。

标签: javascript


【解决方案1】:

每次包含该脚本时都会运行该脚本,但请确保不要每次都重新定义 pendingAjaxCalls 变量。即在声明它之前检查它的定义:

if(!pendingAjaxCalls)
  var pendingAjaxCalls=0;

/* code happens here */

pendingAjaxCalls++;

【讨论】:

  • 这引导我找到我的解决方案。谢谢。我最终得到了这样的声明: if(pendingAjaxCalls == null){ var pendingAjaxCalls = 0; } /* .... / / 增加/减少pendingAjaxCalls的代码 */ 根据我在javascript书中读到的内容,这个if语句将根据javascript测试变量pendingAjaxCalls是未定义还是空类型强制发生在“==”中。这样,如果变量已经在代码中的其他地方“吐出”,我就不会弄乱它了。
  • 是 - 并且 if(!pendingAjaxCalls) 等价于 if(pendingAjaxCalls == null),因为 0 == null == false。但我很高兴它有所帮助!
【解决方案2】:

每次您使用script 标签包含脚本时,浏览器都会下载该文件并对其进行评估。每次包含 JavaScript 文件时,都会评估内容。

【讨论】:

    【解决方案3】:

    如果对增加变量的函数的实际调用被多次插入,您可能会多次增加它。

    另一方面,如果只有增加它的函数被多次插入(不是函数调用),那么JavaScript将使用最近定义的版本这个功能的。所以在这种情况下不应该增加额外的次数。

    换句话说,如果你插入同一个函数两次但只调用一次,你不必担心被调用函数的“两个副本”,因为一个副本有效地覆盖了另一个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-29
      相关资源
      最近更新 更多