这是在jQuery中组织代码的聪明方法吗?

con*_*t47 5 javascript jquery

我写的所有代码都是最长的时间......

$(document).ready(function(){
    $('.show_module').click(function(){

    });
     ...

});
Run Code Online (Sandbox Code Playgroud)

在那里放置各种点击处理程序.但最近我被介绍了一种新的做事方式,我想要了解它是否是一种明智的方式.

我们的想法是让所有处理程序都在相关的函数中,然后在document.ready中使用最少的代码.

所以例如......

$(document).ready(function(){
    page_handler(); // other functions follow
});

function page_handler(){
    $('.show_module').click(function(){

    });
     ...
}
Run Code Online (Sandbox Code Playgroud)

这似乎允许在函数中组织相关的处理程序并使用document.ready作为更多的初始化程序.

我知道在JavaScript函数中,变量在代码开始执行之前就被"提升"了

do_something();
function do_something(){

}
Run Code Online (Sandbox Code Playgroud)

因为这个原因,因为函数在do_something()被实际调用之前就可以使用了,即使它出现在实际的函数定义之前.

我想知道这里是否发生了同样的事情以及这种想法/做事方式的"好".

ale*_*lex 5

这会将所有处理程序暴露给global(window)范围,这可能会导致冲突.

我更喜欢这样做......

(function($) {

 // Anything you do in here won't be attached to window.
 var a;

 // If you must have something global, set it explicitly
 window.doSomething = function() { ... }

 // We can also use $ for jQuery here, even if we have used jQuery.noConflict()
 $('body')...

})(jQuery);
Run Code Online (Sandbox Code Playgroud)