我想过做这样的事情:
(function(window, undefined){
$ = window.jQuery;
$(function(){
// Do some stuff
});
})(this);
你会考虑这种好的做法还是坏的?它对jQuery(document).ready()何时触发有什么影响?
答案 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的情况下,它不是必需的。就绪函数已经创建了一个范围。