javascript - 如何在两个闭包之间共享数据而不暴露于全局?

标签 javascript scope closures private

我设置了两个封闭作用域,其中一个作用域依赖于另一个作用域。通常,我会通过将数据公开到全局范围来共享数据(在本例中是具有原型(prototype)的函数),如下所示:

(function(){

    var thing;

    /* ... */

    window.thing = thing;

}());

和:

(function(){

    /* I now have access to 'thing' */

}());

是否有一种模式可以共享数据而不将其暴露给整个窗口?

最佳答案

这只能通过使两个闭包本身成为另一个闭包的子作用域,并使共享数据成为父闭包中的局部变量来完成:

(function() {

    var thing = 'foo';

    (function f1() {
        // thing is accessible here
        ...
    })();

    (function f2() {
        // and here!
        ...
    })();
})();

注意:闭包是一个词法结构,这意味着两个函数必须都在同一个源单元内。

关于javascript - 如何在两个闭包之间共享数据而不暴露于全局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24381425/

相关文章:

javascript - 函数内更改后,无法访问更改后的变量值

PHP:程序代码 - 使用命名空间或闭包数组来避免污染全局命名空间?

javascript - 页面加载时显示文本区域的所有行

javascript - 我想每次都将不同的变量传递给循环中动态创建的按钮

java - Spring 批处理 : Does a scope job exist

javascript - 这个 javascript 函数是如何调用的,它使用什么模式?

soap - 从 map 动态构建闭包?

javascript - Socket.io 没有发出值

javascript - HTML 文件脚本和 CSS 放置

javascript - 作用域或闭包的问题