国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript 使用閉包防止變量污染

yuanzhanghu / 981人閱讀

摘要:在多人協作時,如果定義過多的全局變量有可能造成全局變量命名沖突,使用閉包來解決功能對變量的調用將變量寫到一個獨立的空間里面就是閉包里面外部內部打印形成接口將最后一個函數之后返回給函數形成一個執行函數的接口開啟這個功能這樣做形成了一個閉包閉包

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/93589.html

相關文章

  • 淺談JavaScript中的閉包

    摘要:在內部,理所當然能訪問到局部變量,但當作為的返回值賦給外的全局變量時,神奇的事情發生了在全局作用域中訪問到了,這就是閉包。而閉包最神奇的地方就是能在一個函數外訪問函數中的局部變量,把這些變量用閉包的形式放在函數中便能避免污染。 一、閉包是什么? 《JavaScript高級程序設計》中寫道:閉包是指有權訪問另一個函數作用域中的變量的函數,如果用下定義的觀點看,這句話就是說閉包是函數,我...

    Riddler 評論0 收藏0
  • 前端小知識--從Javascript閉包看let

    摘要:閉包會在父函數外部,改變父函數內部變量的值。立即執行函數立即執行函數,顧名思義,立即會執行的函數,即當讀取到該函數,會立即執行。特性使用語句聲明一個變量,該變量的范圍限于聲明它的塊中。使用聲明的變量,在聲明前無法使用,否則將會導致錯誤。 let和閉包 之前一直模模糊糊記得,let解決了某個閉包問題,想用時又不敢肯定,今天終于遇到這個問題了,那我們就一起來分析一下,什么是let,let有...

    Kross 評論0 收藏0
  • 體驗javascript之美-第五課 匿名函數自執行和閉包是一回事兒嗎?

    摘要:大家想想怎么做什么是匿名函數自執行并如何在實際庫中應用匿名函數自執行,注意,注意,只有這個名字和沒有其它名字,比如封閉空間,這個是為了讓大家好理解自己造的詞語。 通過本節課你將學到: 1.什么是函數表達式和函數聲明 2.first-class function 3.引用和復制的區別 4.函數傳參是怎么回事兒 5.關于函數的this和arguments 6.什么是匿名函數自執行并如何在...

    _Suqin 評論0 收藏0
  • 前端基礎問題整理-JavaScript相關

    摘要:請解釋事件代理事件代理也稱為事件委托,利用了事件冒泡。同源指的是協議域名端口相同,同源策略是一種安全協議。目的同源策略保證了用戶的信息安全,瀏覽器打開多個站點時,互相之間不能利用獲取對方站點的敏感信息。 請解釋事件代理(event delegation) 事件代理也稱為事件委托,利用了事件冒泡。例如: item1 item2 item3 當頁面li增多時單...

    劉東 評論0 收藏0
  • 漫談javascript函數式編程

    摘要:高階函數不是的所特有的,其他編程語言也有。高階函數面向切面編程面向切面編程這種思想在開發中比較常見,主要就是將一些與核心業務無關的功能抽離出來,比如異常處理,日志統計等。 javascript的函數式語言特性 我們知道JavaScript使一門面向對象的編程語言,但這門語言同時擁有很多函數式語言的特性。 JavaScript的設計者在設計最初就參考了LISP方言之一的Scheme,引入...

    liaorio 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<