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