javaScript在多人协作时,如果定义过多的全局变量 有可能造成全局变量命名冲突,使用闭包来解决功能对变量的调用 将变量写到一个独立的空间里面 就是闭包里面
1 var name = "外部name"; 2 var init = (function(){ 3 var name = "内部name"; 4 function callName(){ 5 console.log(name); 6 //打印name 7 } 8 return function(){ 9 callName();10 //形成接口11 }12 }());13 init();
将最后一个函数return之后返回给init函数形成一个执行callName()函数的接口 开启callName()这个功能 这样做形成了一个闭包 闭包的变量私有化不会污染全局变量
执行init() 打印的name与外部的name互不影响
使用这种方式也有利于实现各种操作 不污染全局变量就可以把特定的功能写到一个闭包里面去 然后留出一个接口方便启用这个功能
var name = "GlobalName"; //全局变量 var init = (function(){ var name = "initName"; function callName(){ console.log(name); //打印name } return function(){ callName(); //形成接口 } }()); init(); // --> initName var initSuper = (function(){ var name = "initSuperName"; function callName(){ console.log(name); //打印name } return function(){ callName(); //形成接口 } }()); initSuper(); // --> initSuperName
在执行init( )和initSuper( )时打印的name值互不影响