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

資訊專欄INFORMATION COLUMN

JS閉包

ACb0y / 781人閱讀

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

JS閉包是什么?

首先,放一個概念:

函數(shù) 加 函數(shù)內(nèi)部能訪問到的局部變量 就組成了一個閉包

那閉包又有什么作用呢?

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

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

有這樣一段代碼:

var i = "i am in windows"

var test = function(){

     var a = 0;

      var  b = function(){ 

           console.log(a)

       }

       return b

}

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

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

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

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

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

所以函數(shù)套函數(shù)只是為了造出一個局部變量,跟閉包無關(guān)。

那為什么又要 return b 呢?

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

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

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

看到了嗎 function scope 里面出現(xiàn)了Closure 和 Global

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

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

驗證下

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

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

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

這就是 隱藏 了一個變量

by 潘小閑

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

同步github

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

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

相關(guān)文章

  • JS 中的閉包是什么?

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

    Enlightenment 評論0 收藏0
  • js閉包的本質(zhì)

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

    qianfeng 評論0 收藏0
  • 談?wù)勎宜斫獾?em>閉包,js、php、golang里的closure

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

    betacat 評論0 收藏0
  • 談?wù)勎宜斫獾?em>閉包,js、php、golang里的closure

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

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

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

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

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

    MartinDai 評論0 收藏0

發(fā)表評論

0條評論

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