国产精品美女久久久浪潮AV,国产精品三级一二三区,久久精品国产一区二区小说 ,依依成人影视国产精品,全部无卡免费的毛片在线看,日本一区二区三深夜不卡,国产精品女同一区二区久久,国产精品夜色一区二区三区

        JS中作用域的銷(xiāo)毀和不銷(xiāo)毀的情況總結(jié)

        2018-5-25    seo達(dá)人

        如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請(qǐng)點(diǎn)這里

        window全局作用域->頁(yè)面關(guān)掉才銷(xiāo)毀
        函數(shù)執(zhí)行會(huì)形成私有的作用域

        1)作用域的銷(xiāo)毀
        一般情況下,函數(shù)執(zhí)行形成一個(gè)私有的作用域,當(dāng)執(zhí)行完成后就銷(xiāo)毀了->節(jié)省內(nèi)存空間

        2)作用域的不立即銷(xiāo)毀
        function fn(){
        var i=10;
        return function(n){
        console.log(n+i++);
        }
        }
        fn()(15);//->先執(zhí)行fn,有一個(gè)私有的變量i=10,返回一個(gè)堆內(nèi)存地址 xxxfff111,我們發(fā)現(xiàn)這個(gè)地址還用到了一次,那么當(dāng)前的這個(gè)fn形成私有作用域(A)就不能立即銷(xiāo)毀了,xxxfff111(15)->輸出25,A中的i變?yōu)?1;當(dāng)xxxfff111執(zhí)行完了,發(fā)現(xiàn)這個(gè)地址沒(méi)用了,瀏覽器就把A、xxxfff111都釋放了

        fn()(20);//->在執(zhí)行fn的時(shí)候一切都從新開(kāi)始了,和上面的步驟是一樣的->輸出30

        3)作用域的不銷(xiāo)毀:形成一個(gè)私有作用域,里面的內(nèi)容被外面占用了
        function fn(){
        var i=10;
        return function(n){
        console.log(n+i++);
        }
        }
        var f=fn();//->fn執(zhí)行形成一個(gè)私有的作用域A,A中有一個(gè)私有的變量i=10,A中返回一個(gè)地址xxxfff11,被外面的f占用了,那么當(dāng)前的A就不能銷(xiāo)毀了
        f(15);//->輸出25,讓A中的i=11
        f(20);//->輸出31,讓A中的i=12

        當(dāng)我們知道f用完的時(shí)候,為了優(yōu)化性能,我們讓f=null,這樣的話A中的xxxfff111沒(méi)人占用了,瀏覽器會(huì)把A和xxxfff111都釋放了


        幾種不銷(xiāo)毀常用到的形式:
        1)函數(shù)執(zhí)行,返回一個(gè)引用數(shù)據(jù)類(lèi)型的值,并且在函數(shù)的外面被別人接收了,那么當(dāng)前函數(shù)形成的私有作用域就不在銷(xiāo)毀了–>例如上面的案例

        2)在函數(shù)執(zhí)行的時(shí)候,里面的一個(gè)小函數(shù)的地址賦值給了我們的外面元素的點(diǎn)擊事件,那么當(dāng)前小函數(shù)也相當(dāng)于被外面占用了,大函數(shù)執(zhí)行形成的私有的作用域也不銷(xiāo)毀了
        //每一次循環(huán)都執(zhí)行自執(zhí)行函數(shù)形成一個(gè)私有的作用域(循環(huán)三次就有三個(gè)作用域,每一個(gè)作用域中都有一個(gè)i,第一個(gè)存儲(chǔ)的是0,第二個(gè)存數(shù)的是1..),在每一個(gè)私有的作用域中都把里面的函數(shù)綁定給了外面元素的點(diǎn)擊事件,這樣的話每一次形成的作用域都不銷(xiāo)毀了(三個(gè)不銷(xiāo)毀的作用域)
        var oLis=document.getElementsByTagName(“l(fā)i”);
        for(var i=0;i<oLis.length;i++){
        ~function(i){
        oLis[i].onclick=function(){
        tabChange(i);
        }
        }(i);
        }

        3)在使用setTimeout實(shí)現(xiàn)輪詢(xún)動(dòng)畫(huà)的時(shí)候,我們?nèi)绻鹠ove需要傳遞參數(shù)值,那么像下面這樣的寫(xiě)法會(huì)行成很多的不銷(xiāo)毀的作用域,非常的耗性能
        function move(tar){
        <js code>

        //window.setTimeout(move,10); ->第二次執(zhí)行move的時(shí)候我們沒(méi)有給它傳值(這樣寫(xiě)不行)
        window.setTimeout(function(){
        move(tar);
        },10);//->這樣寫(xiě)實(shí)現(xiàn)了,但是每一次執(zhí)行定時(shí)器都會(huì)形成一個(gè)私有的所用域(匿名函數(shù)形成的)A,在A中使用了上級(jí)作用域中的tar的值,而且執(zhí)行了move又形成了一個(gè)小的作用域(而在小的作用域中會(huì)使用tar的值),這樣每一次定時(shí)器形成的A都不能銷(xiāo)毀了
        }
        move(100);//->第一次這樣執(zhí)行傳遞100

        //解決辦法:
        function move(tar){
        ~function _move(){
        <js code>
        window.setTimeout(_move,10);
        }();
        }
        move(100);//->第一次這樣執(zhí)行傳遞100


        JS中內(nèi)存空間釋放的問(wèn)題(堆內(nèi)存、棧內(nèi)存)
        [谷歌瀏覽器]
        我們開(kāi)辟一個(gè)內(nèi)存,可能或有一些其他的變量等占用了這個(gè)內(nèi)存,谷歌瀏覽器都會(huì)間隔一段時(shí)間看這個(gè)內(nèi)存還有沒(méi)有被占用,如果發(fā)現(xiàn)有沒(méi)有被占用的內(nèi)存了,就自己幫我們回收了(內(nèi)存釋放)

        [火狐和IE]
        我們開(kāi)個(gè)內(nèi)存,當(dāng)我們引用了它,就在內(nèi)存中記錄一個(gè)數(shù),增加一個(gè)引用瀏覽器就把這個(gè)數(shù)+1,減少一個(gè)引用,瀏覽器就把這個(gè)數(shù)-1…當(dāng)減到零的時(shí)候?yàn)g覽器就把這個(gè)內(nèi)存釋放了;但是有些情況下(尤其是IE)記著記著就弄亂了,內(nèi)存就不能釋放了–>瀏覽器的內(nèi)存泄露

        var obj={};
        我們養(yǎng)成一個(gè)好的習(xí)慣,當(dāng)我們obj這個(gè)對(duì)象使用完成了,我們手動(dòng)的obj=null (null空對(duì)象指針),瀏覽器會(huì)自己把剛才的堆內(nèi)存釋放掉


        藍(lán)藍(lán)設(shè)計(jì)www.shtzxx.cn )是一家專(zhuān)注而深入的界面設(shè)計(jì)公司,為期望卓越的國(guó)內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶(hù)體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 平面設(shè)計(jì)服務(wù)

        日歷

        鏈接

        個(gè)人資料

        存檔

        主站蜘蛛池模板: 日本高清一区二区三| 欧美人与动牲交欧美精品| chinesefree高潮抽搐| 两个人看的视频www| yy111111少妇影院无码| 泊头市| 成人区精品一区二区婷婷| 欧洲熟妇色xxxx欧美老妇多毛| 特级xxxxx欧美孕妇| 亚洲熟妇av日韩熟妇在线| 日本黄色二区三区免费观看| 久久精品亚洲乱码伦伦中文| 国产无套内射又大又猛又粗又爽| 国产超碰人人做人人爰| 国产精品午夜福利视频234区| 俺来也俺去啦久久综合网| 久久久久久av无码免费看大片| 免费女人裸体视频无遮挡免费网站| 国产婷婷精品av在线| 国产偷人妻精品一区二区在线| 午夜无码a级毛片免费视频| 亚洲欧美精品午睡沙发| 罗江县| 亚洲va无码va在线va天堂| 久久无码人妻影院| 性国产vⅰdeosfree高清| 亚洲色无码播放| 保靖县| 日本少妇高潮喷水视频| 政和县| 亚洲精品国产美女久久久99| 一个人看的视频免费高清| 通榆县| 啊灬啊灬啊灬快灬高潮了 | 婷婷色婷婷开心五月| 三年片观看免费观看大全| 国精产品一二二线精东| 墨竹工卡县| 亚洲国产香蕉碰碰人人| 高清自拍亚洲精品二区| 热99re久久精品这里都是精品 |