Javascript 我应该将jQuery文档包装成一个自动执行函数吗?
我有一个想法要做这样的事情:Javascript 我应该将jQuery文档包装成一个自动执行函数吗?,javascript,jquery,Javascript,Jquery,我有一个想法要做这样的事情: (function(window, undefined){ $ = window.jQuery; $(function(){ // Do some stuff }); })(this); 你会考虑这个好的做法还是坏的?它对jQuery(document).ready()何时启动有任何影响吗?不需要它。使用自执行函数创建一个作用域,使您在该作用域中创建的变量不会成为全局变量 var a = 'Hi'; alert(w
(function(window, undefined){
$ = window.jQuery;
$(function(){
// Do some stuff
});
})(this);
你会考虑这个好的做法还是坏的?它对jQuery(document).ready()何时启动有任何影响吗?不需要它。使用自执行函数创建一个作用域,使您在该作用域中创建的变量不会成为全局变量
var a = 'Hi';
alert(window.a); // "Hi"
(function () {
var a = 'Hi';
})();
alert(window.a); // "undefined"
对于jQuery,不需要它。ready函数已经创建了一个作用域。我想说的唯一原因是,如果在DOM准备就绪之前要运行一些javascript,并且不想污染全局名称空间
(function(window, undefined){
var $ = window.jQuery;
// create some variables and/or functions that shouldn't be global
// ...and do some work before the "ready()" fires
var a = 'some value';
function b() {
// do some important stuff
}
var c = b();
// Maybe set up a `.live()` handler, which doesn't rely on DOM ready.
$('.someSelector').live( function() {
// Some handler code.
// This works before DOM is ready.
});
$(function(){
// Your DOM ready code
});
})(this);
真的没有意义。库已经将对全局jQuery对象的引用作为“ready”函数的第一个参数传递给您。您知道在您的示例中,
$
是全局的吗?你可以省略直接函数,你也可以得到同样的效果。是的,我知道$s是全局的,我主要是想把ready函数包装成实践。不过谢谢你指出这一点。