如果我有原创功能(例如):
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
})()
似乎有点多余?
答案 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; }
})();