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

資訊專欄INFORMATION COLUMN

初識閉包

鄒強 / 1321人閱讀

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

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

作用域

可能你會問:明明是講閉包,為什么又講作用域了? 在理解閉包之前我們首先要明白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

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

閉包的概念

現在我們來說什么是閉包,我所理解的閉包就是就是可以訪問其他函數內部的函數。同樣像前面的例子,我們現在就用閉包來實現在函數外部訪問local變量

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

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

這個時候我們相當于通過函數bar()間接的訪問到了函數f1()中的局部變量local,因此在func()第一次執行的時候我們得到local=2,但是為什么第二次調用func()得到的local卻等于3呢? 按理說我第二次調用func()應該是從f1()中的第一句 var local = 2 開始執行啊。這就涉及閉包的另一個作用了。

閉包的作用

閉包除了能訪問函數內部的局部變量,還有一個作用就是將函數內部的變量值儲存到內存中。

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

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/82869.html

相關文章

  • 初識EMCASCRIPT 模塊化

    摘要:到目前為止,我們完成了模塊的簡易定義與使用。但是模塊化的一大精髓是命名空間,就是按需導入,而此時卻是一個全局變量。 為什么需要模塊化? 當我們在html中調用一個js函數時,如果我們把這個函數寫在另外的一個js文件中,那么調用的時候我們需要在html的頭部引入那個js文件。 index.html Hello world index.js func...

    Bamboy 評論0 收藏0
  • JavaScript中的閉包

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

    AaronYuan 評論0 收藏0
  • Java8-1-初識Lambda表達式與函數式接口

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

    jzman 評論0 收藏0
  • 【連載】前端個人文章整理-從基礎到入門

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

    madthumb 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<