立即调用函数表达式(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的全局变量/属性,你可以这样做:
(function(yourcode) {
yourcode(window.jQuery, window, document);
}(function($, window, document) {
}
));
如果您想了解更多有关IIFE的信息,请阅读我的博客文章,标题为"我爱我的IIFE"。
jQuery Ready事件
许多开发人员将他们的所有代码都包裹在jQuery的ready事件中,如下所示:
$("document").ready(function() {
});
或者像这样更简短的版本:
$(function() {
});
如果您正在执行以上任何一种模式,则应考虑将不依赖于DOM的应用程序部分(例如方法)移动到ready事件处理程序之外。像这样:
如果您正在执行以上任何一种模式,则应考虑将不依赖于DOM的应用程序部分(例如方法)移动到ready事件处理程序之外。像这样:
// 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/
jQuery
。 - elclanrsjQuery(function($){ //use $ });
- elclanrs