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

資訊專欄INFORMATION COLUMN

初識(shí)閉包

鄒強(qiáng) / 1316人閱讀

摘要:寫(xiě)文章之前,查閱了很多的資料,也看了很多大牛對(duì)閉包的解釋,現(xiàn)在總算是對(duì)閉包有了一定的理解。那么如果我們要訪問(wèn)中的該怎么辦呢這個(gè)時(shí)候就需要引入閉包了。閉包的作用閉包除了能訪問(wèn)函數(shù)內(nèi)部的局部變量,還有一個(gè)作用就是將函數(shù)內(nèi)部的變量值儲(chǔ)存到內(nèi)存中。

寫(xiě)文章之前,查閱了很多的資料,也看了很多大牛對(duì)閉包的解釋,現(xiàn)在總算是對(duì)閉包有了一定的理解。

作用域

可能你會(huì)問(wèn):明明是講閉包,為什么又講作用域了? 在理解閉包之前我們首先要明白JavaScript中變量作用域的概念,我們都知道JavaScript的變量分為局部變量和全局變量,比如:

var global = 1;

function f1() {
    var local = 2;
    console.log(global )    // 1
    console.log(local)    // 2
}

console.log(global )    // 1
console.log(local)    // local is not defined

在上面示例中g(shù)lobal是全局變量,因此可以在任何地方訪問(wèn)它,而local是定義在函數(shù)f1()中的局部變量,因此只能在f1()中訪問(wèn)。那么如果我們要訪問(wèn)f1()中的local該怎么辦呢? 這個(gè)時(shí)候就需要引入閉包了。

閉包的概念

現(xiàn)在我們來(lái)說(shuō)什么是閉包,我所理解的閉包就是就是可以訪問(wèn)其他函數(shù)內(nèi)部的函數(shù)。同樣像前面的例子,我們現(xiàn)在就用閉包來(lái)實(shí)現(xiàn)在函數(shù)外部訪問(wèn)local變量

function f1() {
    var local = 2;
    function bar() {
        console.log(local++)
    }
    return bar
}

var func = f1();
func();    // 2
func();    // 3

這個(gè)時(shí)候我們相當(dāng)于通過(guò)函數(shù)bar()間接的訪問(wèn)到了函數(shù)f1()中的局部變量local,因此在func()第一次執(zhí)行的時(shí)候我們得到local=2,但是為什么第二次調(diào)用func()得到的local卻等于3呢? 按理說(shuō)我第二次調(diào)用func()應(yīng)該是從f1()中的第一句 var local = 2 開(kāi)始執(zhí)行啊。這就涉及閉包的另一個(gè)作用了。

閉包的作用

閉包除了能訪問(wèn)函數(shù)內(nèi)部的局部變量,還有一個(gè)作用就是將函數(shù)內(nèi)部的變量值儲(chǔ)存到內(nèi)存中。

在上面的示例中,f1()的返回值是bar()函數(shù),我們調(diào)用func()的時(shí)候其實(shí)就是在調(diào)用bar(), 而bar()定義在f1內(nèi)部,是依賴f1()而存在的,因此調(diào)用bar時(shí)將f1()中的local變量放入了內(nèi)存中,在第二次調(diào)用的時(shí)候自然也就從內(nèi)存中得到了local++后的值。

本文參考文章:http://www.cnblogs.com/cxying... http://www.ruanyifeng.com/blo...

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/82869.html

相關(guān)文章

  • 初識(shí)EMCASCRIPT 模塊化

    摘要:到目前為止,我們完成了模塊的簡(jiǎn)易定義與使用。但是模塊化的一大精髓是命名空間,就是按需導(dǎo)入,而此時(shí)卻是一個(gè)全局變量。 為什么需要模塊化? 當(dāng)我們?cè)趆tml中調(diào)用一個(gè)js函數(shù)時(shí),如果我們把這個(gè)函數(shù)寫(xiě)在另外的一個(gè)js文件中,那么調(diào)用的時(shí)候我們需要在html的頭部引入那個(gè)js文件。 index.html Hello world index.js func...

    Bamboy 評(píng)論0 收藏0
  • JavaScript中的閉包

    摘要:但是,不合理地濫用閉包,也會(huì)造成很多性能問(wèn)題,從而使項(xiàng)目維護(hù)成本增加。 前言 相信很多小伙伴在工作或者面試過(guò)程中都遇到過(guò)這個(gè)問(wèn)題,作為經(jīng)典的前端面試題之一,它高頻地出現(xiàn)在我們的求職生涯中。所以,了解和掌握它也就變得十分必要了 讀完這篇文章,你或許就會(huì)知道: 閉包是什么,它是怎么形成的 為什么要使用閉包 閉包會(huì)造成哪些問(wèn)題 如果文章中有出現(xiàn)紕漏、錯(cuò)誤之處,還請(qǐng)看到的小伙伴多多指教,先...

    AaronYuan 評(píng)論0 收藏0
  • Java8-1-初識(shí)Lambda表達(dá)式與函數(shù)式接口

    摘要:而在中,表達(dá)式是對(duì)象,它們必須依附于一類特別的對(duì)象類型函數(shù)式接口。即表達(dá)式返回的是函數(shù)式接口類型。 Java8被稱作Java史上變化最大的一個(gè)版本。其中包含很多重要的新特性,最核心的就是增加了Lambda表達(dá)式和Stream API。這兩者也可以結(jié)合在一起使用。首先來(lái)看下什么是Lambda表達(dá)式。Lambda表達(dá)式,維基百科上的解釋是一種用于表示匿名函數(shù)和閉包的運(yùn)算符,感覺(jué)看到這個(gè)解釋...

    jzman 評(píng)論0 收藏0
  • 【連載】前端個(gè)人文章整理-從基礎(chǔ)到入門

    摘要:個(gè)人前端文章整理從最開(kāi)始萌生寫(xiě)文章的想法,到著手開(kāi)始寫(xiě),再到現(xiàn)在已經(jīng)一年的時(shí)間了,由于工作比較忙,更新緩慢,后面還是會(huì)繼更新,現(xiàn)將已經(jīng)寫(xiě)好的文章整理一個(gè)目錄,方便更多的小伙伴去學(xué)習(xí)。 showImg(https://segmentfault.com/img/remote/1460000017490740?w=1920&h=1080); 個(gè)人前端文章整理 從最開(kāi)始萌生寫(xiě)文章的想法,到著手...

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

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

0條評(píng)論

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