我应该在自动执行函数中包装jQuery文档吗?

时间:2011-06-30 17:34:45

标签: javascript jquery

我想过做这样的事情:

(function(window, undefined){
    $ = window.jQuery;
    $(function(){
        // Do some stuff
    });     
})(this);

你会考虑这种好的做法还是坏的?它对jQuery(document).ready()何时触发有什么影响?

2 个答案:

答案 0 :(得分:6)

我唯一的理由是,如果你有一些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);

答案 1 :(得分:3)

不需要。使用自执行函数创建一个范围,使得您在该范围中创建的变量不会变为全局变量。

var a = 'Hi';
alert(window.a); // "Hi"

(function () {
    var a = 'Hi';
})();
alert(window.a); // "undefined"

在jQuery的情况下,它不是必需的。就绪函数已经创建了一个范围。