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

Mat*_*hew 14 jquery scope

所以为了保持井井有条,我有几个javascript文件,即使它们全部(最终)被缩小在一起形成一个最终的javascript文件.

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

$(document).ready(function(){
    //some javascript here
});
Run Code Online (Sandbox Code Playgroud)

好像我把东西放在单独的文件中(在那些代码之间),它们彼此无法访问.这是范围问题吗?我能做什么?

例如,在一个文件中,我有一堆代码来根据通过ajax接收的数据创建表.但是,该文件的一半只是模板,用于显示数据,具体取决于它的类型等.我想将模板放在他们自己的文件中.

我知道这只是一个"偏好"问题,我可以把它全部放在一个文件中.

但我希望从中学到这一点,甚至可以让它成为"我的"方式.

Ada*_*sek 28

Javascript使用功能范围,因此函数内部的局部变量对外部不可见.这就是您的代码无法访问其他范围的代码的原因.

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

var NS = {};

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

$(document).ready(function(){
  NS.publicFunction();
});
Run Code Online (Sandbox Code Playgroud)

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