成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JavaScript 使用閉包防止變量污染

yuanzhanghu / 990人閱讀

摘要:在多人協(xié)作時(shí),如果定義過多的全局變量有可能造成全局變量命名沖突,使用閉包來解決功能對(duì)變量的調(diào)用將變量寫到一個(gè)獨(dú)立的空間里面就是閉包里面外部?jī)?nèi)部打印形成接口將最后一個(gè)函數(shù)之后返回給函數(shù)形成一個(gè)執(zhí)行函數(shù)的接口開啟這個(gè)功能這樣做形成了一個(gè)閉包閉包

javaScript在多人協(xié)作時(shí),如果定義過多的全局變量 有可能造成全局變量命名沖突,使用閉包來解決功能對(duì)變量的調(diào)用 將變量寫到一個(gè)獨(dú)立的空間里面 就是閉包里面

 1       var name = "外部name";
 2         var init = (function(){
 3             var name = "內(nèi)部name";
 4             function callName(){
 5                 console.log(name);
 6                 //打印name
 7             }
 8             return function(){
 9                 callName();
10                 //形成接口
11             }
12         }());
13         init();

將最后一個(gè)函數(shù)return之后返回給init函數(shù)形成一個(gè)執(zhí)行callName()函數(shù)的接口 開啟callName()這個(gè)功能 這樣做形成了一個(gè)閉包 閉包的變量私有化不會(huì)污染全局變量

執(zhí)行init() 打印的name與外部的name互不影響

使用這種方式也有利于實(shí)現(xiàn)各種操作 不污染全局變量就可以把特定的功能寫到一個(gè)閉包里面去 然后留出一個(gè)接口方便啟用這個(gè)功能

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

在執(zhí)行init( )和initSuper( )時(shí)打印的name值互不影響

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/93589.html

相關(guān)文章

  • 淺談JavaScript中的閉包

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

    Riddler 評(píng)論0 收藏0
  • 前端小知識(shí)--從Javascript閉包看let

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

    Kross 評(píng)論0 收藏0
  • 體驗(yàn)javascript之美-第五課 匿名函數(shù)自執(zhí)行和閉包是一回事兒?jiǎn)幔?/b>

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

    _Suqin 評(píng)論0 收藏0
  • 前端基礎(chǔ)問題整理-JavaScript相關(guān)

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

    劉東 評(píng)論0 收藏0
  • 漫談javascript函數(shù)式編程

    摘要:高階函數(shù)不是的所特有的,其他編程語言也有。高階函數(shù)面向切面編程面向切面編程這種思想在開發(fā)中比較常見,主要就是將一些與核心業(yè)務(wù)無關(guān)的功能抽離出來,比如異常處理,日志統(tǒng)計(jì)等。 javascript的函數(shù)式語言特性 我們知道JavaScript使一門面向?qū)ο蟮木幊陶Z言,但這門語言同時(shí)擁有很多函數(shù)式語言的特性。 JavaScript的設(shè)計(jì)者在設(shè)計(jì)最初就參考了LISP方言之一的Scheme,引入...

    liaorio 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<