真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

javascript閉包淺析

什么是閉包

根據(jù)官方語言解釋:一個(gè)擁有許多變量和綁定了這些變量的環(huán)境的表達(dá)式(通常是一個(gè)函數(shù)),因而這些變量也是該表達(dá)式的一部分。
按照我的理解:但是你只需要知道應(yīng)用的兩種情況即可——函數(shù)作為返回值,函數(shù)作為參數(shù)傳遞。理解了這兩種情況,你基本上知道閉包是怎么回事了;
解說一下:
通常來說,JS里面當(dāng)一個(gè)函數(shù)被調(diào)用完成之后,window會(huì)自動(dòng)將這個(gè)函數(shù)的作用域給銷毀掉,這個(gè)作用域里面的變量也隨之被銷毀,這個(gè)是瀏覽器的自動(dòng)垃圾回收機(jī)制,但是有些時(shí)候,一個(gè)函數(shù)被叼用完成之后,這個(gè)函數(shù)卻不會(huì)被銷毀掉,這個(gè)就是閉包的核心內(nèi)容了;

成都創(chuàng)新互聯(lián)是專業(yè)的麥積網(wǎng)站建設(shè)公司,麥積接單;提供網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行麥積網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

函數(shù)作為返回值:
javascript閉包淺析
javascript閉包淺析

產(chǎn)生差異的原因:兩個(gè)情況的作用域不同
函數(shù)作為返回值的時(shí)候,fn_A1,它的作用域是處在fn_A里面,所以,fn_A1在執(zhí)行的時(shí)候,它首先找到max是fn_A里面的max,而不是全局作用域里面的max,
這個(gè)例子里面:當(dāng)fn_A 這個(gè)方法在執(zhí)行的時(shí)候,它會(huì)產(chǎn)生一個(gè)相應(yīng)的作用域,在它執(zhí)行完成的時(shí)候,按照道理來說,window會(huì)自動(dòng)銷毀這個(gè)作用域的,但是事實(shí)上,沒有辦法這么做。因?yàn)檫@個(gè)方法它返回的是一個(gè)函數(shù),這個(gè)函數(shù)也需要?jiǎng)?chuàng)建一個(gè)作用域,而且,這個(gè)函數(shù)中,它需要用到一個(gè)自由變量max,而且這個(gè)max是fn_A這個(gè)作用域下面的,因此,這個(gè)max不能被銷毀,從而導(dǎo)致了fn_A這個(gè)作用域也沒有被銷毀到;因此fn_B在執(zhí)行的時(shí)候(實(shí)質(zhì)上是執(zhí)行fn_A1,下面以fn_A1來說),過程大概如下圖一樣
在執(zhí)行fn_A1的時(shí)候,它需要用到max這個(gè)變量,但是這個(gè)函數(shù)的作用域里面沒有這個(gè)變量,所以往上一層去尋找,在fn_A這作用域里面找到的max,并且它的值是10,
javascript閉包淺析

這里的重點(diǎn)就在于,在創(chuàng)建fn_A1的時(shí)候,fn_A已經(jīng)執(zhí)行結(jié)束了,但是fn_A的作用域還沒有被銷毀掉,這里就形成了一個(gè)閉包,因此,fn_A1還能在fn_A的作用域里面找到max,如果fn_A的作用域被銷毀了,那么max就找不到了;
使用閉包會(huì)導(dǎo)致內(nèi)存開銷的增加,過多的使用閉包會(huì)可能導(dǎo)致內(nèi)存泄漏,從而造成瀏覽器的運(yùn)行速度降低甚至瀏覽器奔潰;

函數(shù)作為參數(shù)傳遞的時(shí)候,fn_A1它的作用域是處在全局的作用域里面,即使它作為參數(shù)傳給了fn,但是在fn執(zhí)行的時(shí)候,實(shí)際上仍然是fn_A1在執(zhí)行,而fn_A1在用到max的時(shí)候,它首先找到的是全局作用域的max
函數(shù)作為參數(shù)傳遞
javascript閉包淺析
javascript閉包淺析

下一期我將會(huì)針對(duì)JavaScript?的數(shù)據(jù)類型---對(duì)象,繼續(xù)展開討論,敬請(qǐng)期待哦!
javascript閉包淺析
睿江云計(jì)算官網(wǎng):http://www.eflycloud.com/home?from=RJ_0024


當(dāng)前名稱:javascript閉包淺析
鏈接URL:http://weahome.cn/article/ghjsei.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部