我目前正在阅读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。有什么好处?
答案 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));
}())