在模块化JS中处理全局变量



我想在重写大型JS项目的重写上移动一个模块化方法。并希望使用require.js来管理。

但是,我在理解如何消除全局变量时很难理解。

所以,例如,我以前有

var global = 1; //define global
somefunction(); //call function that uses global
function somefunction(){
   var local = global * 2; //use global
   console.log("local = " local); //output
   };

并为require.js

重写
define(function(){
   return { 
     somefunction: function() {
         var local = global * 2; //still using global
         console.log("local = " local); //output

         };
      };
   });

我将如何重写它以本地化全球并真正模块化。

假设 global是用该模块使用仅使用,请在define呼叫中定义它:

define(function(){
   var global = 1;  // <=============
   return { 
     somefunction: function() {
         var local = global * 2;
         console.log("local = " local); //output

         };
      };
   });

如果您希望其他模块使用global,则将其放在自己的模块中,并具有模块require IT。我认为,使用这种模块样式,这意味着您必须使其成为对象属性(使用ES2015模块,您不必这样)。

最新更新