Min*_*nja 7 javascript jquery iife
我正在阅读Greg Franko关于'jQuery Best Practices'的博客文章.
在他的早期幻灯片中,他解释了典型/更好/最好的做事方式.
典型(链接)
$("document").ready(function() {
console.log('hello world');
});
Run Code Online (Sandbox Code Playgroud)
要么
$(function() {
console.log('hello world');
});
Run Code Online (Sandbox Code Playgroud)
更好(链接)
(function($, window, document) {
$(function() {
console.log('hello world');
});
}(window.jQuery, window, document));
Run Code Online (Sandbox Code Playgroud)
最好的(链接)
(function(yourcode) {
yourcode(window.jQuery, window, document);
}(function($, window, document) {
$(function() {
console.log('hello world');
});
}));
Run Code Online (Sandbox Code Playgroud)
所以我想我的问题是 - 第三个例子比第二个例子好吗?两者都是IIFE.我看到的唯一区别是#2将jQuery对象(+ window + document)传递到IIFE并运行代码然后#3传递jQuery对象(+ window + document)和 JavaScript代码传入IIFE.有什么好处?
@敏贾,
我相信自执行函数包装器 (function() { ... }()) 是提高性能的诀窍。
请参阅下面的试验。
我尝试用下面的代码缩短最佳代码,这确实减少了执行时间。
(function($, window, document) {
$(function() {
console.log('hello world');
});
}(window.jQuery, window, document));
Run Code Online (Sandbox Code Playgroud)
但下面的内容确实进一步减少了它。现在这变成了最好的。:)
(function(){
(function($, window, document) {
$(function() {
console.log('hello world');
});
}(window.jQuery, window, document));
}())
Run Code Online (Sandbox Code Playgroud)