Javascript 我可以在木偶模块的第二个定义中访问木偶模块的私有变量吗?

Javascript 我可以在木偶模块的第二个定义中访问木偶模块的私有变量吗?,javascript,backbone.js,marionette,Javascript,Backbone.js,Marionette,木偶网允许您将模块的定义拆分到不同的文件中 是否有可能从模块的第二部分访问在模块的一部分中定义的私有变量或函数? 例如: //in module1.js App.module("MyModule", function(MyModule, App, Backbone...){ myPrivateVar = 0; } //in module2.js App.module("MyModule", function(MyModule, App, Backbone...){ var my

木偶网允许您将模块的定义拆分到不同的文件中

是否有可能从模块的第二部分访问在模块的一部分中定义的私有变量或函数? 例如:

//in module1.js
App.module("MyModule", function(MyModule, App, Backbone...){
    myPrivateVar = 0;
}

//in module2.js
App.module("MyModule", function(MyModule, App, Backbone...){
    var myPrivateFunction = function(){
        if (myPrivateVar>0){
            //do something
        }
    }
}

你不能。这绝不是木偶特有的

javascript中的变量是函数范围的。换句话说,函数中声明的任何变量仅在该函数中可用

定义伪私有变量(实际上是公共的)的常见约定是在名称前加下划线:

//in module1.js
App.module("MyModule", function(MyModule, App, Backbone...){
    MyModule._myPrivateVar = 0;
});

//in module2.js
App.module("MyModule", function(MyModule, App, Backbone...){
    var myPrivateVar = MyModule._myPrivateVar;
    var myPrivateFunction = function(){
        if (myPrivateVar>0){
            //do something
        }
    }
});
不从模块外部访问前缀变量的注意事项取决于您。您还应该了解模块的加载顺序:为了定义
\u myPrivateVar
,需要在module2.js之前加载module1.js