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

时间:2010-12-07 12:10:44

标签: javascript anonymous-function

如果我有原创功能(例如):

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

我已经把它变成了一个自我调用的匿名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  x= (function() {
        var x = function() { alert('tadaaa'); return 1; }
        return x
    })()

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

似乎有点多余?

2 个答案:

答案 0 :(得分:3)

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

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

这基本上是模块模式的内容(例如参见http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth)。

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

答案 1 :(得分:1)

你可以:

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