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

資訊專欄INFORMATION COLUMN

JS閉包

ACb0y / 787人閱讀

摘要:閉包是什么首先,放一個概念函數加函數內部能訪問到的局部變量就組成了一個閉包那閉包又有什么作用呢閉包常常用來間接訪問一個變量。其實這是翻譯問題,閉包的原文是,跟包沒有任何關系。所以函數套函數只是為了造出一個局部變量,跟閉包無關。

JS閉包是什么?

首先,放一個概念:

函數 加 函數內部能訪問到的局部變量 就組成了一個閉包

那閉包又有什么作用呢?

閉包常常用來「間接訪問一個變量」。換句話說,「隱藏一個變量」。

通常做法是 暴露一個訪問器(函數),讓別人可以「間接訪問」那個變量。

有這樣一段代碼:

var i = "i am in windows"

var test = function(){

     var a = 0;

      var  b = function(){ 

           console.log(a)

       }

       return b

}

很明顯 a 是 test 這個函數對象內的局部變量 而在其內部 b 又引用了這個對象a 這就是一個閉包

a變量 和 b 函數對象組成了一個閉包

那為什么要test函數里要再套一個b函數呢?

是因為需要局部變量,所以才把 a 放在一個函數里,如果不把 a 放在一個函數里,a 就是一個全局變量了,達不到使用閉包的目的——隱藏變量。

有些人看到「閉包」這個名字,就一定覺得要用什么包起來才行。其實這是翻譯問題,閉包的原文是 Closure,跟「包」沒有任何關系。

所以函數套函數只是為了造出一個局部變量,跟閉包無關。

那為什么又要 return b 呢?

因為如果不 return,你就無法使用這個閉包。return b 的目的只是讓外面可以訪問到這個 b 函數。

所以 return b 只是為了 b 能被使用,也跟閉包無關。

下面看下 閉包的廬山真面目:

看到了嗎 function scope 里面出現了Closure 和 Global

Closure里有 a 變量的值 也就是 0

那么我們是否可以猜測 我們在首行定義的全局變量 i 是不是就在Global這個 function scope 里面?

驗證下

全局變量 i 確實就在 Global里面

其實,function scope內默認有個名為 Globe 的全局引用(有了這個引用,就可以直接調用 Globe 的屬性或方法)

而在Closure里的變量或方法 外部是無法直接訪問的

這就是 隱藏 了一個變量

by 潘小閑

參考資料:JS中的閉包是什么

同步github

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

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

相關文章

  • JS 中的閉包是什么?

    摘要:大名鼎鼎的閉包面試必問。閉包的作用是什么。看到閉包在哪了嗎閉包到底是什么五年前,我也被這個問題困擾,于是去搜了并總結下來。關于閉包的謠言閉包會造成內存泄露錯。閉包里面的變量明明就是我們需要的變量,憑什么說是內存泄露這個謠言是如何來的因為。 本文為饑人谷講師方方原創文章,首發于 前端學習指南。 大名鼎鼎的閉包!面試必問。請用自己的話簡述 什么是「閉包」。 「閉包」的作用是什么。 首先...

    Enlightenment 評論0 收藏0
  • js閉包的本質

    摘要:也正因為這個閉包的特性,閉包函數可以讓父函數的數據一直駐留在內存中保存,從而這也是后來模塊化的基礎。只有閉包函數,可以讓它的父函數作用域永恒,像全局作用域,一直在內存中存在。的本質就是如此,每個模塊文件就是一個大閉包。 為什么會有閉包 js之所以會有閉包,是因為js不同于其他規范的語言,js允許一個函數中再嵌套子函數,正是因為這種允許函數嵌套,導致js出現了所謂閉包。 function...

    qianfeng 評論0 收藏0
  • 談談我所理解的閉包js、php、golang里的closure

    摘要:當初看這個解釋有點懵逼,理解成閉包就是函數中的函數了。里的閉包最近不滿足于只干前端的活,開始用起了。里的閉包最近在學習語言,讓我們來看一下語言里的閉包。在中,閉包特指將函數作為值返回的情況,被返回的函數引用了生成它的母函數中的變量。 本人開始接觸編程是從js開始的,當時網上很多人說閉包是難點,各種地方對閉包的解釋也是千奇百怪。如今開始接觸js以外的各種編程語言,發現不光是js,php、...

    betacat 評論0 收藏0
  • 談談我所理解的閉包js、php、golang里的closure

    摘要:當初看這個解釋有點懵逼,理解成閉包就是函數中的函數了。里的閉包最近不滿足于只干前端的活,開始用起了。里的閉包最近在學習語言,讓我們來看一下語言里的閉包。在中,閉包特指將函數作為值返回的情況,被返回的函數引用了生成它的母函數中的變量。 本人開始接觸編程是從js開始的,當時網上很多人說閉包是難點,各種地方對閉包的解釋也是千奇百怪。如今開始接觸js以外的各種編程語言,發現不光是js,php、...

    zhoutao 評論0 收藏0
  • 詳解js閉包

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

    Chiclaim 評論0 收藏0
  • JS腳丫系列】重溫閉包

    摘要:內部的稱為內部函數或閉包函數。過度使用閉包會導致性能下降。,閉包函數分為定義時,和運行時。循環會先運行完畢,此時,閉包函數并沒有運行。閉包只能取得外部函數中的最后一個值。事件綁定種的匿名函數也是閉包函數。而對象中的閉包函數,指向。 閉包概念解釋: 閉包(也叫詞法閉包或者函數閉包)。 在一個函數parent內聲明另一個函數child,形成了嵌套。函數child使用了函數parent的參數...

    MartinDai 評論0 收藏0

發表評論

0條評論

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