【问题标题】:ES6: Save variable into module scopeES6:将变量保存到模块范围内
【发布时间】:2014-06-23 11:11:28
【问题描述】:

我想知道是否以及如何将以下config 保存到我的模块范围内(将下面的块视为一个模块):

var config = null;

var mySingleton = {
    init: function(config) {
        config = config; // Naming conflict!
    },

    printConfig: function() {
        console.log(config); // Undefined!
    }
};

export { mySingleton };

很遗憾,发生了命名冲突。我需要像module.config = config; 这样的东西。

注意:我使用的是es6-module-transpiler

【问题讨论】:

    标签: javascript ecmascript-6


    【解决方案1】:

    没有。它是一个简单的变量,而不是一个全局变量(它可以作为全局对象的属性访问),所以它只是被遮蔽而不可用“命名空间”。

    您需要使用不同的名称来解决冲突,这应该是微不足道的并且不会在模块之外造成任何影响:

    var config = null;
    
    var mySingleton = {
        init: function(conf) {
            config = conf;
        },
        printConfig: function() {
            console.log(config);
        }
    };
    
    export { mySingleton };
    

    【讨论】:

    • 另一个想法,告诉我你的想法:var module = {};,然后:init: function (config) { module.config = config },创建一个自己的模块命名空间可能比重命名变量好一点?
    • 它会工作,但看起来很麻烦。我不明白你为什么一开始就选择了相同的变量名……
    猜你喜欢
    • 2023-03-20
    • 2017-07-07
    • 1970-01-01
    • 2016-05-14
    • 2015-08-06
    • 2016-06-06
    • 1970-01-01
    • 2020-02-10
    相关资源
    最近更新 更多