立即调用函数表达式 (IIFE)
IIFE 是一个理想的解决方案,用于在本地限定全局变量/属性并保护您的 JavaScript 代码库免受外部干扰(例如第三方库)。如果您正在编写将在许多不同环境中运行的 jQuery 代码(例如 jQuery 插件),那么使用 IIFE 对 jQuery 进行本地范围很重要,因为您不能假设每个人都使用 $ 来为 jQuery 取别名。以下是您的操作方法:
// IIFE - Immediately Invoked Function Expression
(function($, window, document) {
// The $ is now locally scoped
// The rest of your code goes here!
}(window.jQuery, window, document));
// The global jQuery object is passed as a parameter
如果您不喜欢滚动到源文件的底部来查看您传递给 IIFE 的全局变量/属性,您可以这样做:
// IIFE - Immediately Invoked Function Expression
(function(yourcode) {
// The global jQuery object is passed as a parameter
yourcode(window.jQuery, window, document);
}(function($, window, document) {
// The rest of your code goes here!
}
));
要了解有关 IIFE 的更多信息,您可以阅读我的博客文章,标题为“我爱我的 IIFE”。
jQuery 就绪事件
许多开发人员将所有代码包装在 jQuery 就绪事件中,如下所示:
$("document").ready(function() {
// The DOM is ready!
// The rest of your code goes here!
});
或者像这样的较短版本:
$(function() {
// The DOM is ready!
// The rest of your code goes here!
});
如果您正在执行上述任一模式,那么您应该考虑将不依赖于 DOM 的应用程序部分(例如方法)移到就绪事件处理程序之外。像这样:
// IIFE - Immediately Invoked Function Expression
(function(yourcode) {
// The global jQuery object is passed as a parameter
yourcode(window.jQuery, window, document);
}(function($, window, document) {
// The $ is now locally scoped
$(function() {
// The DOM is ready!
});
// The rest of your code goes here!
}
));
这种模式可以更轻松地分离您的逻辑(从代码设计的角度来看),因为并非所有内容都必须包装在单个事件处理程序回调函数中。它还将提高应用程序的页面加载性能,因为并非所有内容都需要立即初始化。一个很好的例子是惰性绑定 DOM 事件处理程序,当 DOM 准备好时不需要绑定。
改编自我的 jQuery 最佳实践博客文章: http: //gregfranko.com/blog/jquery-best-practices/