现在我进行了以下设置:
var foo = 'bar';
function alertFoo() {
alert(foo);
};
如果我想限制 foo
的范围,使其不是全局的,我可以使用以下函数表达式来实现:
var alertFoo = (function() {
var foo = 'bar';
return function() {
alert(foo);
}
)();
有没有办法将此函数表达式转换为类似于第一个代码示例的函数声明?
最佳答案
更新答案:
回复您的评论:
The one on the outside, I'd like alertFoo to hoisted
好吧,你可以这样做:
function alertFoo() {
var foo = 'bar';
doTheAlert();
function doTheAlert() {
alert(foo);
}
}
...但我无法想象这真的适合您的需求。除此之外,不,你无法将其吊起。
原始答案:
是的,您可以在函数表达式中声明该函数,如下所示:
var alertFoo = (function() {
var foo = 'bar';
return alertFoo;
function alertFoo() {
alert(foo);
}
}();
或者您可以声明作用域函数并然后调用它,然后在当前作用域中创建另一个符号:
function scoping() {
var foo = 'bar';
return alertFoo;
function alertFoo() {
alert(foo);
}
)
var alertFoo = scoping();
关于javascript - 通过函数声明公开函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25654047/