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

資訊專(zhuān)欄INFORMATION COLUMN

Javascript 閉包詳解

ztyzz / 2577人閱讀

摘要:一般函數(shù)執(zhí)行完畢,局部活動(dòng)對(duì)象就會(huì)被銷(xiāo)毀,內(nèi)存中僅僅保存全局作用域,但是閉包會(huì)長(zhǎng)期駐扎在內(nèi)存。我只是想通過(guò)這兩個(gè)例子來(lái)說(shuō)明閉包的用處和好處。閉包會(huì)使變量始終保存在內(nèi)存中,如果使用不當(dāng)會(huì)增大內(nèi)存消耗。

閉包特性
函數(shù)嵌套函數(shù)
函數(shù)內(nèi)部可以引用外部的參數(shù)和變量
參數(shù)和變量不會(huì)被垃圾回收機(jī)制回收
閉包的作用

具體作用是有權(quán)訪問(wèn)函數(shù)內(nèi)部的變量,最常見(jiàn)的就是函數(shù)內(nèi)部創(chuàng)建另一個(gè)函數(shù),通過(guò)另一個(gè)函數(shù)訪問(wèn)這個(gè)函數(shù)的局部的變量。
缺點(diǎn):就是常駐內(nèi)存,會(huì)增大內(nèi)存的使用量,使用不當(dāng)會(huì)造成內(nèi)存泄露。
一般函數(shù)執(zhí)行完畢,局部活動(dòng)對(duì)象就會(huì)被銷(xiāo)毀,內(nèi)存中僅僅保存全局作用域,但是閉包會(huì)長(zhǎng)期駐扎在內(nèi)存。

js垃圾回收

在javascript中,如果一個(gè)對(duì)象不再被引用,那么這個(gè)對(duì)象就會(huì)被GC回收;(Garbage Collection),計(jì)算機(jī)科學(xué)中一種自動(dòng)釋放不再被使用的內(nèi)存空間的機(jī)制。
如果兩個(gè)對(duì)象互相引用,而不再被第3者所引用,那么這兩個(gè)互相引用的對(duì)象也會(huì)被回收。

全局變量 count++ 累加
var count = 0;
function testCount(){
    count++;
    console.log(count);
}

testCount();//result 1
testCount();//result 2
局部變量++ 不累加
function testCount(){
    var count=0;
    count++;
    console.log(count);
}
testCount();//result 1
testCount();//result 1

//到這里會(huì)問(wèn)玩毛線呢 這個(gè)我們懂 I know。 我只是想通過(guò)這兩個(gè)例子來(lái)說(shuō)明閉包的用處和好處。
局部變量count++累加
function testCount(){
    var count=0;
    return function(){
        count++;
        console.log(count);
    }
}
var plus = testCount();  //函數(shù)賦值給變量
plus();        //plus函數(shù)調(diào)用一次,結(jié)果為1,相當(dāng)于testCount()();
plus();        //plus調(diào)用第二次,結(jié)果為2,實(shí)現(xiàn)了局部變量累加了。

//閉包會(huì)使變量始終保存在內(nèi)存中,如果使用不當(dāng)會(huì)增大內(nèi)存消耗。

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

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

相關(guān)文章

  • 閉包詳解

    摘要:再看一段代碼這樣就清晰地展示了閉包的詞法作用域能訪問(wèn)的作用域?qū)?dāng)做一個(gè)值返回執(zhí)行后,將的引用賦值給執(zhí)行,輸出了變量我們知道通過(guò)引用的關(guān)系,就是函數(shù)本身。 在正式學(xué)習(xí)閉包之前,請(qǐng)各位同學(xué)一定要確保自己對(duì)詞法作用域已經(jīng)非常的熟悉了,如果對(duì)詞法作用域還不夠熟悉的話,可以先看: 深入理解閉包之前置知識(shí)---作用域與詞法作用域 前言 現(xiàn)在去面試前端開(kāi)發(fā)的崗位,如果你的面試官也是個(gè)前端,并且不是太...

    cnio 評(píng)論0 收藏0
  • 詳解js閉包

    摘要:但閉包的情況不同嵌套函數(shù)的閉包執(zhí)行后,,然后還在被回收閉包會(huì)使變量始終保存在內(nèi)存中,如果不當(dāng)使用會(huì)增大內(nèi)存消耗。每個(gè)函數(shù),不論多深,都可以認(rèn)為是全局的子作用域,可以理解為閉包。 閉包(closure)是Javascript語(yǔ)言的一個(gè)難點(diǎn),也是它的特色,很多高級(jí)應(yīng)用都要依靠閉包實(shí)現(xiàn)。 閉包的特性 閉包有三個(gè)特性: 1.函數(shù)嵌套函數(shù) 2.函數(shù)內(nèi)部可以引用外部的參數(shù)和變量 3.參數(shù)和變量不會(huì)...

    Chiclaim 評(píng)論0 收藏0
  • JavaScript閉包詳解

    摘要:局部變量,當(dāng)定義該變量的函數(shù)調(diào)用結(jié)束時(shí),該變量就會(huì)被垃圾回收機(jī)制回收而銷(xiāo)毀。如果在函數(shù)中不使用匿名函數(shù)創(chuàng)建閉包,而是通過(guò)引用一個(gè)外部函數(shù),也不會(huì)出現(xiàn)循環(huán)引用的問(wèn)題。 閉包是什么 在 JavaScript 中,閉包是一個(gè)讓人很難弄懂的概念。ECMAScript 中給閉包的定義是:閉包,指的是詞法表示包括不被計(jì)算的變量的函數(shù),也就是說(shuō),函數(shù)可以使用函數(shù)之外定義的變量。 是不是看完這個(gè)定義感...

    longshengwang 評(píng)論0 收藏0
  • 閉包全面詳解

    摘要:環(huán)境由閉包創(chuàng)建時(shí)在作用域中的任何局部變量組成。嚴(yán)格來(lái)說(shuō),閉包需要滿(mǎn)足三個(gè)條件訪問(wèn)所在作用域函數(shù)嵌套在所在作用域外被調(diào)用閉包的形成原理先了解的垃圾回收機(jī)制會(huì)找出不再使用的變量,不再使用意味著這個(gè)變量生命周期的結(jié)束。 什么是閉包 最原始定義 閉包(closure),是指函數(shù)變量可以保存在函數(shù)作用域內(nèi),因此看起來(lái)是函數(shù)將變量包裹了起來(lái)。 //根據(jù)定義,包含變量的函數(shù)就是閉包 function...

    qylost 評(píng)論0 收藏0
  • JavaScript深入淺出

    摘要:理解的函數(shù)基礎(chǔ)要搞好深入淺出原型使用原型模型,雖然這經(jīng)常被當(dāng)作缺點(diǎn)提及,但是只要善于運(yùn)用,其實(shí)基于原型的繼承模型比傳統(tǒng)的類(lèi)繼承還要強(qiáng)大。中文指南基本操作指南二繼續(xù)熟悉的幾對(duì)方法,包括,,。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。 怎樣使用 this 因?yàn)楸救藢儆趥吻岸耍虼宋闹兄豢炊?8 成左右,希望能夠給大家?guī)?lái)幫助....(據(jù)說(shuō)是阿里的前端妹子寫(xiě)的) this 的值到底...

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

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

0條評(píng)論

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