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

資訊專欄INFORMATION COLUMN

閉包--閉包作用之保存(一)

darkbug / 510人閱讀

摘要:閉包作用解析保存函數(shù)執(zhí)行形成一個(gè)私有作用域,函數(shù)執(zhí)行完成,開成的這個(gè)棧內(nèi)存一般情況下都會(huì)自動(dòng)釋放函數(shù)執(zhí)行完成,當(dāng)前私有作用哉棧內(nèi)存中的某一部分內(nèi)容被內(nèi)存以外的其它東西變量元素的事件占用了,當(dāng)前的棧內(nèi)存就不能釋放掉,也就形成了不銷毀的私有作用

閉包作用解析:保存

函數(shù)執(zhí)行形成一個(gè)私有作用域,函數(shù)執(zhí)行完成,開成的這個(gè)棧內(nèi)存一般情況下都會(huì)自動(dòng)釋放

函數(shù)執(zhí)行完成,當(dāng)前私有作用哉(棧內(nèi)存)中的某一部分內(nèi)容被內(nèi)存以外的其它東西(變量/元素的事件)占用了,當(dāng)前的棧內(nèi)存就不能釋放掉,也就形成了不銷毀的私有作用域(里面的私有變量也不會(huì)銷毀)

函數(shù)作用域

函數(shù)內(nèi)部可以訪問(wèn)函數(shù)外部的變量,

函數(shù)外部不可以訪問(wèn)函數(shù)內(nèi)部的變量

當(dāng)在函數(shù)外部定義一個(gè)變量,變量在函數(shù)內(nèi)部發(fā)生了變化,函數(shù)內(nèi)部和外部都能訪問(wèn)到這個(gè)變量

        var a = 1;
        function fn1(){
            a++;
            console.log(a)  //2
        }
        fn1()
        console.log(a)  //2
閉包作用例子:保存

fn():調(diào)用完函數(shù),就會(huì)釋放棧內(nèi)存

f(): 在函數(shù)外面有一個(gè)變量接收了這個(gè)返回值,此時(shí) 當(dāng)前作用域不能銷毀

        function fn() {
            var i = 1;
            return function(n) {
                console.log(n + i++)
            }
        }
        var f = fn();
        f(10);   //11     正確:11,10+1=10,之后1為2,因?yàn)閒(10),在函數(shù)fn()外面調(diào)用,故函數(shù)fn()里的棧內(nèi)存不銷毀,i一直存在
        fn()(10); //12    正確:11 先執(zhí)行fn(),之后再執(zhí)行(10),即f(10),執(zhí)行fn是重新把所有的流程執(zhí)行一遍,臨時(shí)不銷毀,當(dāng)返回結(jié)果執(zhí)行完,沒(méi)有被占用了,就會(huì)釋放掉
        f(20);  //21      正確:22  //棧內(nèi)存沒(méi)有銷毀,20+1
        fn()(20);  //22   正確:21 第二次執(zhí)行fn是重新把所有的流程執(zhí)行一遍,和第一次沒(méi)有任何直接的關(guān)系,20+2=22
        function fn() {
            var i = 1;
            return function(n) {
                console.log(n + i++)
            }
        }
        var f = fn();
        f(10);  //11
        f(20); //22
        function fn() {
            var i = 1;
            return function(n) {
                console.log(n + i++)
            }
        }
        var f = fn();
        fn()(10); //11
        fn()(20); //21
        function fn() {
            var i = 1;
            return function(n) {
                console.log(n + i++)
            }
        }
        var f = fn();
        fn()(10); //11
        f(20); //21
舉一反三
        var i = 1;
        function fn() {
            return function(n) {
                console.log(n + i++)
            }
        }
        var f = fn();
        f(10); //11
        fn()(10); //12
        f(20); //23
        fn()(20); //24
        function fn(i) {
            return function(n) {
                console.log(n + i++)   
            }
            //console.log(i)  //因?yàn)閞eturn,所以走不到這一hi
        }
        var f = fn(10);
        f(20); //30       正確:30 
        fn(10)(20); //31   正確:30
        f(30); //40        正確:41
        fn(20)(10); // 31  正確:30
        f(40) //50         正確:52

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

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

相關(guān)文章

  • 老生常談閉包(你不可不知的若干知識(shí)點(diǎn))

    摘要:閉包是什么這是一個(gè)在面試的過(guò)程中出現(xiàn)的概率為以上的問(wèn)題,也是我們張口就來(lái)的問(wèn)題。文章推薦我們面試中在被問(wèn)到閉包這個(gè)問(wèn)題是要注意的幾點(diǎn)閉包的延伸,讓面試變得 閉包是什么?這是一個(gè)在面試的過(guò)程中出現(xiàn)的概率為60%以上的問(wèn)題,也是我們張口就來(lái)的問(wèn)題。但是我們往往發(fā)現(xiàn),在面試的過(guò)程中我們的回答并不那么讓面試官滿意,我們雖然能張口說(shuō)出一些但是卻不能系統(tǒng)的對(duì)這個(gè)問(wèn)題進(jìn)行回答。面試官希望加入自己團(tuán)隊(duì)...

    daydream 評(píng)論0 收藏0
  • 進(jìn)擊的 JavaScript(四) 閉包

    摘要:此時(shí)產(chǎn)生了閉包。導(dǎo)致,函數(shù)的活動(dòng)對(duì)象沒(méi)有被銷毀。是不是跟你想的不一樣其實(shí),這個(gè)例子重點(diǎn)就在函數(shù)上,這個(gè)函數(shù)的第一個(gè)參數(shù)接受一個(gè)函數(shù)作為回調(diào)函數(shù),這個(gè)回調(diào)函數(shù)并不會(huì)立即執(zhí)行,它會(huì)在當(dāng)前代碼執(zhí)行完,并在給定的時(shí)間后執(zhí)行。 上一節(jié)說(shuō)了執(zhí)行上下文,這節(jié)咱們就乘勝追擊來(lái)搞搞閉包!頭疼的東西讓你不再頭疼! 一、函數(shù)也是引用類型的。 function f(){ console.log(not cha...

    Anleb 評(píng)論0 收藏0
  • JavaScript閉包(三)

    摘要:目錄執(zhí)行環(huán)境與作用域鏈立即執(zhí)行函數(shù)閉包知識(shí)點(diǎn)什么是閉包使用閉包的意義與注意點(diǎn)閉包的具體應(yīng)用小結(jié)這是基本語(yǔ)法的函數(shù)部分的第篇文章,主要講述了中比較重要的知識(shí)點(diǎn)閉包在講閉包之前,在上一篇函數(shù)二的基礎(chǔ)上,進(jìn)一步深化執(zhí)行環(huán)境和作用域鏈的知識(shí)點(diǎn),并補(bǔ) 目錄 1.執(zhí)行環(huán)境與作用域鏈 2. 立即執(zhí)行函數(shù) 3. 閉包知識(shí)點(diǎn) 3.1 什么是閉包 3.2 使用閉包的意義與注意點(diǎn) 3.3 閉包的具體應(yīng)用 4...

    Anonymous1 評(píng)論0 收藏0
  • 學(xué)習(xí)JavaScript閉包

    摘要:閉包在我的前端學(xué)習(xí)中一直也是盲點(diǎn),之前很多次看到別人提到我都是完全聽不懂。閉包導(dǎo)致的問(wèn)題因?yàn)殚]包會(huì)使得函數(shù)中的變量都保存在內(nèi)存中,如不能及時(shí)釋放會(huì)對(duì)性能造成影響。 閉包在我的前端學(xué)習(xí)中一直也是盲點(diǎn),之前很多次看到別人提到我都是完全聽不懂。最近一直看書和寫demo,對(duì)閉包也逐漸有所理解了,在這里寫下這篇博客。 從作用域鏈講起 首先明確幾個(gè)概念:1.JavaScript有函數(shù)級(jí)作用域,但沒(méi)...

    shiguibiao 評(píng)論0 收藏0
  • Js學(xué)習(xí)筆記:閉包

    摘要:一前言這個(gè)周末,注意力都在學(xué)習(xí)基礎(chǔ)知識(shí)上面,剛好看到了閉包這個(gè)神圣的東西,所以打算把這兩天學(xué)到的總結(jié)下來(lái),算是鞏固自己所學(xué)。因此要注意閉包的使用,否則會(huì)導(dǎo)致性能問(wèn)題。五總結(jié)閉包的作用能夠讀取其他函數(shù)內(nèi)部變量。 # 一、前言 這個(gè)周末,注意力都在學(xué)習(xí)基礎(chǔ)Js知識(shí)上面,剛好看到了閉包這個(gè)神圣的東西,所以打算把這兩天學(xué)到的總結(jié)下來(lái),算是鞏固自己所學(xué)。也可能有些不正確的地方,也請(qǐng)大家看到了,麻...

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

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

0條評(píng)論

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