像这样初始化jQuery有什么好处?

时间:2017-04-18 21:06:59

标签: javascript jquery iife

我目前正在阅读Greg Franko关于jQuery Best Practices'的博客文章。

在他的早期幻灯片中,他解释了典型/更好/最好的做事方式。

典型link

$("document").ready(function() {
    console.log('hello world');
});

OR

$(function() {
    console.log('hello world');
});

更好link

(function($, window, document) {
    $(function() {
        console.log('hello world');
    });
 }(window.jQuery, window, document));

最佳link

(function(yourcode) {
    yourcode(window.jQuery, window, document);
}(function($, window, document) {
    $(function() {
        console.log('hello world');
    });
}));

所以我想我的问题是 - 是什么让第三个例子比第二个例子更好?两者都是IIFE。我看到的唯一区别是#2将jQuery对象(+ window + document)传递到IIFE并运行代码,而#3传递给jQuery对象(+ window + document) AND 将JavaScript代码导入IIFE。有什么好处?

1 个答案:

答案 0 :(得分:0)

@Minja,

我相信自动执行函数包装器(function(){...}())是提高性能的诀窍。

见下面的试验。

我尝试使用以下内容缩短best code,这确实缩短了执行时间。

(function($, window, document) {
    $(function() {
        console.log('hello world');
    });
}(window.jQuery, window, document));

但是下面确实进一步减少了它。现在变成了最好的。 :)

(function(){
  (function($, window, document) {
    $(function() {
        console.log('hello world');
    });
  }(window.jQuery, window, document));
}())

请参阅下面的截图以获取证据: enter image description here