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互不影响
使用这种方式也有利于实现各种操作 不污染全局变量就可以把特定的功能写到一个闭包里面去 然后留出一个接口方便启用这个功能
<script> 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 </script> 在执行init( )和initSuper( )时打印的name值互不影响