【问题标题】:Why is jQuery document ready closing off access to global variable?为什么 jQuery 文档准备好关闭对全局变量的访问?
【发布时间】:2017-06-22 14:55:27
【问题描述】:

我有一个项目,其中我将三个单独的 JavaScript 文件(example1.js、example2.js 和 example3.js 让我们调用它们)编写成一个 html 文件 (index.html)。它们之间的这三个 JS 文件负责 API 调用和操作结果。

其中一个 JS 文件,example1.js 指的是位于 example2.js 中的全局变量,因为它们都加载到同一个 html 文档中,所以我认为访问所述变量不会成为问题,而且确实如此在我将文件添加到我的 RoR 应用程序之前工作得很好。由于 Rails,我不得不将 JS/jQuery 代码封装在 $document.ready(function(){} 中 (无论如何我应该理所当然地这样做?)。

这产生的影响是我现在在位于 example2.js 中的 example1.js 引用的全局变量上收到“变量未定义”错误,即使同一文件中的其他代码工作正常.

我回到了远离 RoR 的原始 JS 文件,以防这是 ​​Rails 问题。但是,在我的原始文件中使用 jQuery document.ready 函数封装代码在 Rails 环境之外具有相同的效果。有人可以解释为什么会这样以及可能的解决方案吗?

【问题讨论】:

  • 请按照minimal reproducible example提供代码示例。听起来您的范围理解不正确
  • 当您将代码包装在一个函数中时,对于“就绪”处理程序,变量是该函数的本地,而不是全局
  • @Pointy 你能解释一下吗? jsbin.com/puyuyig.thanks
  • @plonknimbuzz 在该代码中,用于“就绪”处理程序的函数不声明任何变量;它是 using 全局变量,这很好。请注意,您没有发布任何实际代码,因此很难准确说出您的问题是什么。
  • @Pointy 我将我的脚本上传到我的 VPS 31.220.58.88/so/js_global 希望你能解释一下。谢谢

标签: javascript jquery


【解决方案1】:

我完全忽略了 document.ready 本身就是一个函数这一事实,因此将全局范围内的所有内容都删除到了 document.ready 的函数范围内。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-26
    • 1970-01-01
    • 2013-10-10
    相关资源
    最近更新 更多