开发者

Anonymous self-invoking JavaScript function - returning multiple objects

If I have original function (as an example):

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

and I've gone ahead and made this into a self-invoking anonymous JS function, as such:

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

am I doing something paradoxical? I'd like to access x and y as global variables, but the self-invoking anonymous function is useful in other areas that I'm not going into detail right now - I just want to keep it.

Should I be doing something like:

开发者_开发知识库
   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
    })()

or

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

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

seems somewhat redundant?


I'm not sure what the goal of al this is, but maybe you could return both functions in an object, like so:

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

This is basically what the Module Pattern is about (see for example http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth).

It's good! Depending on what you need, of course.


You can:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜