Javascript 使用名称而不是匿名函数

Javascript 使用名称而不是匿名函数,javascript,Javascript,以下是我包装所有JavaScript的方式: ;(function($, window, undefined) { var document = window.document; var myFunction = function() {} })(jQuery, window); 但是现在我需要从闭包外部调用myFunction window.addEventListener("offline", function(e) { myFunction(); }, false

以下是我包装所有JavaScript的方式:

;(function($, window, undefined) {
    var document = window.document;
    var myFunction = function() {}
})(jQuery, window);
但是现在我需要从闭包外部调用myFunction

window.addEventListener("offline", function(e) {
    myFunction();
}, false);

问:如何命名自动执行匿名函数,以便从全局范围调用myFunction?

使用名称空间并将其推送到全局范围

window.yourNamespace = window.yourNamespace || {};
window.yourNamespace.myFunction = function() {};

使用名称空间并将其推送到全局范围

window.yourNamespace = window.yourNamespace || {};
window.yourNamespace.myFunction = function() {};

非常简单,只需将函数附加到全局对象(窗口):


非常简单,只需将函数附加到全局对象(窗口):


将函数指定给要使用的对象/范围的属性

;(function($, window, undefined) {
    var document = window.document;
    var myFunction = function() {};
    window.myFunction = myFunction;
})(jQuery, window);
你最好从你的生活中返回一些东西来封装你所有的“出口”

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);

有助于这种编程风格。

将函数指定给要使用的对象/范围的属性

;(function($, window, undefined) {
    var document = window.document;
    var myFunction = function() {};
    window.myFunction = myFunction;
})(jQuery, window);
你最好从你的生活中返回一些东西来封装你所有的“出口”

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);

有助于这种编程风格。

命名自动执行的匿名函数,这会使它不匿名吗?是的,会。我不知道我在说什么。你知道吗,如果你在js中声明一个变量时不放var,这会把它放在全局对象中吗?这将使它可以从任何地方“命名自动执行的匿名函数”,这不是使它不匿名吗?是的,它会。我不知道我在说什么。你知道吗,如果你在js中声明一个变量时不放var,这会把它放在全局对象中吗?这将使它在任何地方都可用谢谢保罗。我看你是从谢菲尔德来的。我以前一直听《船上世界》。谢谢保罗。我看你是从谢菲尔德来的。我过去一直听《船上世界》。