半個月沒寫博文了,最近一直在弄小程序,感覺也沒啥好寫的。

之前讀了js權(quán)威指南,也寫了篇博文,但是實話實說當初看閉包確實還是一頭霧水?,F(xiàn)在時隔一個多月(當然這一段時間還是一直有在看閉包的相關(guān)知識)理解就更深入了一點,下面說說我的理解。

1 function fn(){2    var a = 0;3    return function (){4         return ++a;5    }    
6 }

如上所示,上面第一個return返回的就是一個閉包,那么本質(zhì)上說閉包就是一個函數(shù)。那么返回這個函數(shù)有什么用呢?

那是因為這個函數(shù)可以調(diào)用到它外部的a這個變量。其實也就是說,return返回的是這個函數(shù) + a這個變量

那么,我們現(xiàn)在再來利用這個閉包做點事情

我們不妨創(chuàng)建一個變量 var f = fn(); 我們?nèi)绻?nbsp;console.log(f) 一下就知道,這個f就是return的整個函數(shù)體,也就是  function() { return ++a;} 

那么我們執(zhí)行f()就相當于執(zhí)行function函數(shù)了,這時,我們多次執(zhí)行f()的話,返回的a數(shù)值就會一直疊加。

但是如果我們現(xiàn)在再創(chuàng)建一個變量 

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負責任的教育,學(xué)習(xí)改變命運,軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式