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值互不影响