JavaScript 使用閉包防止變量污染

javaScript在多人協做時,若是定義過多的全局變量 有可能形成全局變量命名衝突,使用閉包來解決功能對變量的調用 將變量寫到一個獨立的空間裏面 就是閉包裏面java

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

使用這種方式也有利於實現各類操做 不污染全局變量就能夠把特定的功能寫到一個閉包裏面去 而後留出一個接口方便啓用這個功能code

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

相關文章
相關標籤/搜索