所以为了保持井井有条,我有几个javascript文件,即使它们全部(最终)被缩小在一起形成一个最终的javascript文件。
每个文件的内容都包含在:
中$(document).ready(function(){
//some javascript here
});
好像我把东西放在单独的文件中(在那些代码之间),它们彼此无法访问。这是范围问题吗?我该怎么办?
例如,在一个文件中,我有一堆代码来根据通过ajax接收的数据创建表。但是,该文件的一半只是模板,用于显示数据,具体取决于它的类型等。我想将模板放在他们自己的文件中。
我知道这只是一个'偏好'问题,我可以将它全部放在一个文件中。
但是我希望从中学到这一点,甚至可以让它成为'我的'。
答案 0 :(得分:28)
Javascript使用功能范围,因此函数内部的局部变量对外部不可见。这就是您的代码无法访问其他范围的代码的原因。
理想的解决方案是创建命名空间。
var NS = {};
(function(){
function privateFunction() { ... }
NS.publicFunction = function(){ ... }
})();
$(document).ready(function(){
NS.publicFunction();
});
这也是一种有用的模式,因为它可以让你区分私人和私人。公共元素。
答案 1 :(得分:1)
这是一个范围问题。例如:
function a() {
var myHiddenStr = 'abc';
}
alert(typeof(myHiddenStr));
您无法在功能myHiddenStr
之外访问a
。以类似的方式,您用于文档准备的匿名函数会隐藏其中的所有内容。
拥有一个全局范围来放置来自不同js文件的东西不是一个好主意。拥有一个document.ready处理程序并从中调用各自的函数可能更好。然后,您可以从函数中获取结果,并将它们传递给需要使用这些函数的其他函数。