關(guān)于"閉包"這個(gè)概念的文章在網(wǎng)上鋪天蓋地,基本已經(jīng)稀爛了,但是有時(shí)候總感覺讀了這么多的文章還是云山霧罩,當(dāng)然是由于它本身就比較難于理解和涉及的知識(shí)較多,還有一個(gè)很重要的原因就是網(wǎng)上很多教程介紹可能存在一定的誤區(qū),或者說(shuō)側(cè)重點(diǎn)不同,下面就通過(guò)代碼實(shí)例簡(jiǎn)單的介紹一下什么是閉包。
代碼實(shí)例一:
function a(){ var webName="VeVb武林網(wǎng)"; console.log(webName); } a() 以上是一段非常簡(jiǎn)單的代碼,當(dāng)函數(shù)執(zhí)行結(jié)束之后,它就會(huì)從內(nèi)存中釋放,里面的聲明的局部變量也將在內(nèi)存中被釋放,自然就無(wú)法被訪問(wèn),在網(wǎng)上很多例子中,大多涉及到了作用域問(wèn)題,其實(shí)一旦涉及作用域問(wèn)題就和“閉包”概念就離題了,盡管作用域和"閉包"存在一定的關(guān)系。
再來(lái)看一段代碼:
function a(){ var webName="VeVb武林網(wǎng)"; function show() { console.log(webName); } return show; } var func = a(); func(); 以上代碼就形成了一個(gè)典型的閉包,函數(shù)a()執(zhí)行之后,在它內(nèi)部聲明的變量webName依然可以使用。
說(shuō)了這么多,閉包到底是什么,下面做一下總結(jié):
閉包是一個(gè)概念,它描述了函數(shù)執(zhí)行完畢內(nèi)存釋放后,依然內(nèi)存駐留的一個(gè)現(xiàn)象,只要把握這個(gè)核心概念,閉包就不難理解了。
以上這篇javascript閉包概念簡(jiǎn)單解析(推薦)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持VeVb武林網(wǎng)。



















