处理模块化js中的全局变量

时间:2016-12-07 15:04:01

标签: javascript requirejs

我想在重写大型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


         };

      };

   });

我如何重写本地化全局并使其真正模块化。

1 个答案:

答案 0 :(得分:0)

假设global仅由 用于该模块,您可以在define回调中定义它:

define(function(){
   var global = 1;  // <=============

   return { 

     somefunction: function() {

         var local = global * 2;
         console.log("local = " local); //output


         };

      };

   });

如果您希望其他模块使用global,您可以将其放在自己的模块中并使用模块require。我认为使用这种模式,这意味着你必须使它成为一个对象属性(使用ES2015模块,你不必)。