调用匿名函数和jQuery(文档).ready()的最佳方法?

时间:2014-02-05 09:47:56

标签: javascript jquery

这是多余的吗?

jQuery(document).ready(function($} {
    //stuff
}(jQuery));

这很丑陋而且过于冗长:

(function($) { $(document).ready(function() {
    //stuff
})})(jQuery);

我需要什么:

  • 高效,漂亮,语义。
  • 避免命名空间冲突。
  • 最小

dom准备就绪后,几乎整个脚本都会运行。将.ready()嵌入到不同行的匿名函数中并不理想,因为几乎整个文件最终都会被双重标签化。

最好的方法是什么?

2 个答案:

答案 0 :(得分:2)

jQuery already passes a reference to itself to the ready callback,所以只需

jQuery(document).ready(function ($) {
    //stuff
});
// or shorter
jQuery(function ($) {
    //stuff
});

顺便说一下,这个

jQuery(document).ready(function ($) {
    //stuff
}(jQuery));

甚至会出错。它立即调用匿名函数,以jQuery作为参数,然后将返回值传递给jQuery(document).ready()

答案 1 :(得分:2)

对此:

(function($) { $(document).ready(function() {
    //stuff
})})(jQuery);

这基本上包含了jQuery's函数的document-ready版本:

$(document).ready(function() {
    //stuff
});

IIFE

(function($) {
    // on-ready-function
}(jQuery));

如果您需要另外封装变量等,这可能很有用。

但我通常这样做:

$(function() {
    //stuff
});

并且没有任何问题(在我10年的职业生涯中)。

要注意的一件事是始终将脚本放在正文的末尾。