匿名自调用JavaScript函数-返回多个对象

匿名自调用JavaScript函数-返回多个对象,javascript,anonymous-function,Javascript,Anonymous Function,如果我有原始函数(作为示例): 我已经将其转化为一个自调用匿名JS函数,如下所示: (function() { var x = function() { alert('tadaaa'); return 1; } var y = function() { alert('tadaaa'); return 1; } })() 我在做一些自相矛盾的事吗?我想将x和y作为全局变量访问,但自调用匿名函数在其他方面很有用,我现在不想详细介绍,我只想保留它 我应该做一些类似于: var

如果我有原始函数(作为示例):

我已经将其转化为一个自调用匿名JS函数,如下所示:

(function() {
    var x = function() { alert('tadaaa'); return 1; }
    var y = function() { alert('tadaaa'); return 1; }
})()
我在做一些自相矛盾的事吗?我想将x和y作为全局变量访问,但自调用匿名函数在其他方面很有用,我现在不想详细介绍,我只想保留它

我应该做一些类似于:

   var  x= (function() {
        var x = function() { alert('tadaaa'); return 1; }
        var y = function() { alert('tadaaa'); return 1; }
        // Should I be doing something like
        return x
    })()


似乎有些多余?

我不确定这是为了什么,但也许可以在一个对象中同时返回两个函数,如下所示:

var funcs = (function() {
    var x = function() { alert('tadaaa'); return 1; };
    var y = function() { alert('tadaaa'); return 1; };
    return {x: x, y: y};
})();

funcs.x();
funcs.y();
这就是模块模式的基本内容(参见示例)


很好!当然,这取决于您需要什么。

我不确定al this的目标是什么,但也许您可以在一个对象中同时返回两个函数,如下所示:

var funcs = (function() {
    var x = function() { alert('tadaaa'); return 1; };
    var y = function() { alert('tadaaa'); return 1; };
    return {x: x, y: y};
})();

funcs.x();
funcs.y();
这就是模块模式的基本内容(参见示例)

很好!当然,这取决于您的需要。

您可以:

var x, y;
(function() {
  x = function() { alert('tadaaa'); return 1; }
  y = function() { alert('tadaaa'); return 1; }
})();
你可以:

var x, y;
(function() {
  x = function() { alert('tadaaa'); return 1; }
  y = function() { alert('tadaaa'); return 1; }
})();

在第二个代码片段中,我相信您将创建
x
y
的本地实例,因此无法全局访问这些实例。缺少off
var
将创建全局变量。但是,我不确定您为什么要在不查看上下文的情况下执行此操作。在第二个代码片段中,我相信您将创建
x
y
的本地实例,因此无法全局访问这些实例。缺少off
var
将创建全局变量。然而,我不知道你为什么要在没有看到上下文的情况下这样做。