javascript - 通过函数声明公开函数

标签 javascript

现在我进行了以下设置:

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/

相关文章:

javascript - D3 Stacked Bar Chart 中引用 JS 数组

Javascript 默认选择一个选项

javascript - 需要转义 jQuery 选择器字符串中的特殊字符

javascript - 在 componentWillUnmount 中清除超时的更好方法

javascript - 获取 TinyTest 正在测试的包的名称

javascript - Bootstrap 动画不起作用

javascript - 输入动态填充时 AngularJS 表单验证失败

javascript - 如何更新 meteor 中的电子邮件地址?

javascript - 如果 child 有特定类(class),如何向父级添加类(class)

javascript - 提供 API key 时,Google map 将无法工作/此页面无法显示 Google map 元素