我有以下代码
(function () {
$(function () {
JaPost.fixedHeight = $('.header').outerHeight();
});
})();
我是否应该在一个立即调用的函数中嵌入jquery文件就绪$(function()?这是习惯做法吗?还是没有必要?
我还有以下代码
(function () {
// Javascript that needs to be run regardless of whether the document is ready
$(function () {
Javascript run when the document is ready
});
})();
我们如何处理立即调用的函数和JQuery?
答案 0 :(得分:1)
您不必将DOM准备好$(function () {
包装到IIFE中。
此外,要确保其他库不会弄乱$
命名空间,您可以:
jQuery(function( $ ){ // DOM ready and $ alias "secured"
$("p").hide();
});
所以不需要,但可以将您的jQuery DOM打包成IIFE,如:
(jQuery(function( $ ){ // DOM ready and $ alias "secured"
$("p").hide();
})());
如果您的其他JS代码的变量名称可能会与其他未知代码发生冲突,那么将您提供的所有内容包装到IIFE 中是一个好主意:
// OTHER JS CODE
var arr = "Arrrrrgh!" // <<< notice the missing ";"
;(function () { // IIFE with leading ; to prevent errors (fn execu.) on missing ;
var arr = [1, 2];
$(function () { // DOM ready
$("p").hide(); // Cool we're hidden now
console.log(arr); // [1, 2]
});
}());
console.log(arr); // "Arrrrrgh!"