千鋒教育JavaScript全套視頻教程(10天學(xué)會(huì)Js,前端javascrip

什么是閉包:
??----(說法1)經(jīng)典應(yīng)用場景、把一個(gè)函數(shù)作為返回值
??----閉包就是一個(gè)函數(shù)
??----(說法2)函數(shù)與其周圍的狀態(tài)(lexical environment,詞法環(huán)境)的組合
寫法:
???1.函數(shù)嵌套函數(shù):閉包必須有函數(shù)嵌套函數(shù)的結(jié)構(gòu)。
???2.內(nèi)部函數(shù)可以訪問外部函數(shù)的變量:內(nèi)部函數(shù)可以訪問外部函數(shù)中的變量,即使在外部函數(shù)執(zhí)行完畢后,這些變量仍然可以被訪問。
???3.外部函數(shù)返回內(nèi)部函數(shù):外部函數(shù)必須返回內(nèi)部函數(shù),才能形成閉包。
好處:
???1.局部變量常駐內(nèi)存,像是全局變量一樣,常駐內(nèi)存,不會(huì)污染全局命名空間。
???2.產(chǎn)生 私有變量
原理:
???1.垃圾回收機(jī)制--被外部引用的局部變量沒有被回收
???2.作用域鏈--內(nèi)部函數(shù)?使用變量的時(shí)候,會(huì)先在自身作用域中,找不到就去父級(jí) 作用域中--依次類推。
缺點(diǎn):
???容易造成內(nèi)存泄漏
???解決:不用的話手動(dòng)賦值為null
標(biāo)簽: