这就是我包装所有JavaScript的方式:
;(function($, window, undefined) {
var document = window.document;
var myFunction = function() {}
})(jQuery, window);
但是现在我需要从那个闭包之外调用myFunction。
window.addEventListener("offline", function(e) {
myFunction();
}, false);
问:如何命名自执行匿名函数,以便我可以从全局范围调用myFunction?
答案 0 :(得分:2)
非常简单,只需将您的函数附加到全局对象(窗口):
;(function($, window, undefined) {
var document = window.document;
var myFunction = function() {}
window.myNamedFunction = myFunction;
})(jQuery, window);
答案 1 :(得分:2)
将函数分配给您要使用的任何对象/范围的属性。
;(function($, window, undefined) {
var document = window.document;
var myFunction = function() {};
window.myFunction = myFunction;
})(jQuery, window);
你最好还是希望从你的IIFE返回一些封装了你所有'出口'的东西。
var exports = (function($, window, undefined) {
var document = window.document;
var myFunction = function() {};
return {
"myFunction": myFunction
};
})(jQuery, window);
window.addEventListener("offline", function(e) {
exports.myFunction();
}, false);
AMD对这种编程风格很有帮助。
答案 2 :(得分:1)
使用命名空间并将其推送到全局范围。
window.yourNamespace = window.yourNamespace || {};
window.yourNamespace.myFunction = function() {};