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

資訊專欄INFORMATION COLUMN

閉包、作用域鏈

JasinYip / 3138人閱讀

摘要:說到閉包大家可能會說函數套函數,延長作用域鏈。剛開始一直不明白為什么執行兩次的值會累加。我這屬于沒有明白函數的執行環境及作用域鏈。

1.說到閉包大家可能會說函數套函數,延長作用域鏈。對沒錯,確實是這樣的,但是你對他的理解是多少呢,函數閉包可以說的有很多,夸張的說,說個半天是絕對沒問題的,它的用處非常多,作用也非常多,這個需要你多想想的,不多說,下面我們來看代碼。

function A(){
        var x = 1;
        return function(){
            x++;
            console.log(x);
        }
    }
    var m1 = A();
    m1();//2
    m1();//3
    var m2 = A();
    m2();//2
    m1();//4

剛開始一直不明白為什么m1執行兩次x的值會累加。我這屬于沒有明白函數的執行環境及作用域鏈。
當m1第一次執行時A()會在內存中開辟一個環境,然后返回函數也會開辟一個執行環境也就是大圈里面有個小圈,
此時小圈里的x時從大圈里拿的,然后會打印2,第二次執行m1時,由于第一次執行m1延長作用域鏈,也就是大小圈依然存在而且里面的x=2,
此時大圈將x的值重新賦值為1,但是小圈里的x依舊是2,當執行到x++是,
會檢測當前環境是否有x,答案是有此時x=2,執行x++時就是2++,打印出來就是3,
當將A()給了m2時又會開辟一個環境,這兩個環境并不干擾,沒有任何聯系。
以上就是我對閉包的一點拙見,可能有不對的地方(全憑個人亂想),請大佬指正!

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

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

相關文章

  • 前端基礎進階(四):詳細圖解作用域鏈閉包

    摘要:之前一篇文章我們詳細說明了變量對象,而這里,我們將詳細說明作用域鏈。而的作用域鏈,則同時包含了這三個變量對象,所以的執行上下文可如下表示。下圖展示了閉包的作用域鏈。其中為當前的函數調用棧,為當前正在被執行的函數的作用域鏈,為當前的局部變量。 showImg(https://segmentfault.com/img/remote/1460000008329355);初學JavaScrip...

    aikin 評論0 收藏0
  • 談js中的作用域鏈閉包

    摘要:所以,當在函數中使用全局變量的時候,所產生的代價是最大的,因為全局對象一直處于作用域鏈的最末位置,讀取局部變量是最快的。 什么是作用域 在編程語言中,作用域控制著變量與參數的可見性及生命周期,它能減少名稱沖突,而且提供了自動內存管理(javascript 語言精粹) 靜態作用域 再者,js不像其他的編程語言一樣,擁有著塊級作用域,就像下面一段代碼。 function afunction...

    LucasTwilight 評論0 收藏0
  • 學習筆記:JavaScript 閉包是怎么通過作用域鏈霸占更多內存的?

    摘要:閉包是怎么通過作用域鏈霸占更多內存的本文是作者學習高級程序設計第一小節的一點個人理解,詳細教程請參考原教材。函數執行過程創建了一個函數的活動對象,作用域鏈的最前端指向這個對象。函數執行完畢返回值后執行環境作用域鏈和活動對象一并銷毀。 JavaScript 閉包是怎么通過作用域鏈霸占更多內存的? 本文是作者學習《JavaScript 高級程序設計》7.2第一小節的一點個人理解,詳細教程請...

    HmyBmny 評論0 收藏0
  • [ JS 進階 ] 閉包作用域鏈,垃圾回收,內存泄露

    摘要:執行返回的內部函數,依然能訪問變量輸出閉包中的作用域鏈理解作用域鏈對理解閉包也很有幫助。早期的版本里采用是計數的垃圾回收機制,閉包導致內存泄露的一個原因就是這個算法的一個缺陷。 關于閉包,我翻了幾遍書,看了幾遍視頻,查了一些資料,可是還是迷迷糊糊的,干脆自己動手來個總結吧 !歡迎指正... (~ o ~)~zZ 1. 什么是閉包? 來看一些關于閉包的定義: 閉包是指有權...

    clasnake 評論0 收藏0
  • JS基礎知識:變量對象、作用域鏈閉包

    摘要:前言這段時間一直在消化作用域鏈和閉包的相關知識。而作用域鏈則是這套規則這套規則的具體運行。是變量對象的縮寫那這樣放有什么好處呢我們知道作用域鏈保證了當前執行環境對符合訪問權限的變量和函數的有序訪問。 前言:這段時間一直在消化作用域鏈和閉包的相關知識。之前看《JS高程》和一些技術博客,對于這些概念的論述多多少少不太清楚或者不太完整,包括一些大神的技術文章。這也給我的學習上造成了一些困惑,...

    Keven 評論0 收藏0
  • [學習筆記] JavaScript 閉包

    摘要:但是,必須強調,閉包是一個運行期概念。通過原型鏈可以實現繼承,而與閉包相關的就是作用域鏈。常理來說,一個函數執行完畢,其執行環境的作用域鏈會被銷毀。所以此時,的作用域鏈雖然銷毀了,但是其活動對象仍在內存中。 學習Javascript閉包(Closure)javascript的閉包JavaScript 閉包深入理解(closure)理解 Javascript 的閉包JavaScript ...

    sunsmell 評論0 收藏0

發表評論

0條評論

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