Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我应该将jQuery文档包装成一个自动执行函数吗?_Javascript_Jquery - Fatal编程技术网

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函数包装成实践。不过谢谢你指出这一点。