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