jquery - $(document).ready() 内的范围?

标签 jquery scope

为了保持组织性,我有几个 javascript 文件,尽管它们(最终)都被缩小到一起形成一个最终的 javascript 文件。

每个文件的内容都包含在:

$(document).ready(function(){
    //some javascript here
});

似乎如果我在单独的文件中(在代码之间)有东西,它们就无法相互访问。这是范围问题吗?我能做什么?

例如,在一个文件中,我有一堆代码用于根据通过 ajax 接收的数据创建表。然而,文件的一半只是用于如何根据数据的类型等显示数据的模板。我希望将模板放在自己的文件中。

我知道这只是一个“偏好”问题,我可以将所有内容都放在一个文件中。

但我希望从中学习,甚至能够按照“我的”方式进行。

最佳答案

Javascript 使用函数作用域,因此函数内部的局部变量对外部不可见。这就是为什么您的代码无法访问其他作用域的代码。

理想的解决方案是创建一个命名空间

var NS = {};

(function(){
  function privateFunction() { ... }
  NS.publicFunction = function(){ ... }
})();

$(document).ready(function(){
  NS.publicFunction();
});

这也是一个有用的模式,因为它允许您区分私有(private)元素和公共(public)元素。

关于jquery - $(document).ready() 内的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4363113/

相关文章:

jquery - CSS 过渡不适用于 ajax 内容

javascript - 使用 JavaScript 动态控制 HTML5 音频

jQuery 不显示希伯来语

c# - 作用范围参数

rust - 在 Rust 中初始化作用域内变量的正确方法

javascript - Jquery 标签删除导致换行?

javascript - 一次将 1 位数字附加到 100,000 位数字字符串中的元素?

f# - F# 中的全局作用域是如何完成的

Javascript:为什么我可以访问全局范围内函数内声明的内部名称?

javascript - 如何将参数传递给使用 setTimeout 调用的函数?