我注意到有时人们在他们的$(function() { ...here... });
块中放置了许多可调用函数。我想知道为什么,但是随后注意到了一个可能的原因:如果两个对象位于不同的jQuery代码块中,则命名冲突似乎并不是问题。
我的想法正确吗?这似乎是一个很大的优势。
但是,既然我已经采用了这种方法,就需要使我的函数之一可以从其他jQuery代码块中调用。因此,我可以将函数移到代码块之外,但它需要在代码块内调用其他函数。
那么我是否需要将所有函数移到代码块之外,或者是否有办法保持这种分离,但仍然能够从另一个代码块调用我的函数之一?
最佳答案
他们正在使用jQuery的document.ready快捷方式这一事实与定义变量实际上并没有太大的关系,而事实上变量(或函数)位于匿名函数创建的闭包内部
`function(){}`
是的,这样做主要是为了避免污染全局名称空间。这样做也是希望,一旦超出范围,垃圾收集器就可以收集其中的某些内容(因为它超出了范围)。
如果您想要一个全局变量,那没有什么不对,只需尝试尽可能地限制它们。如果您需要从ready块内部获取一个,则只需在外部定义并在内部引用即可。
var MyGlobalObj_guid52z = {};
$(function(){
MyGlobalObj_guid52z.MyFunction = function(){
//do what you want in here
};
});
//and later you can do this
MyGlobalObj_guid52z.MyFunction();
关于javascript - 有关在单个函数中组织jQuery函数的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14371584/