如果我将它们放在document.ready()函数中,函数将显示为undefined:
$(document).ready(function(){
function foo()
{
alert('Bar');
}
});
foo(); // Undefined
Run Code Online (Sandbox Code Playgroud)
为什么会这样?我确定我只是需要一些简单的理解:)
在JavaScript中声明本地(内部)函数时,有两个选项:
使用var关键字声明,分配给变量:
(function() {
var innerFunction1 = function() { ... };
innerFunction1();
}());
Run Code Online (Sandbox Code Playgroud)
仅使用function关键字声明,而不指定给变量:
(function() {
function innerFunction2() { ... };
innerFunction2();
}());
Run Code Online (Sandbox Code Playgroud)
我可以看到第二个的一个优点:函数可以在调用它的代码下面声明,因此更容易将私有函数与实际执行的代码分开.
哪个更好,为什么?
所以为了保持井井有条,我有几个javascript文件,即使它们全部(最终)被缩小在一起形成一个最终的javascript文件.
每个文件的内容都包含在:
$(document).ready(function(){
//some javascript here
});
Run Code Online (Sandbox Code Playgroud)
好像我把东西放在单独的文件中(在那些代码之间),它们彼此无法访问.这是范围问题吗?我能做什么?
例如,在一个文件中,我有一堆代码来根据通过ajax接收的数据创建表.但是,该文件的一半只是模板,用于显示数据,具体取决于它的类型等.我想将模板放在他们自己的文件中.
我知道这只是一个"偏好"问题,我可以把它全部放在一个文件中.
但我希望从中学到这一点,甚至可以让它成为"我的"方式.