一.閉包的定義:
閉包是指有權(quán)訪問另?個函數(shù)作?域中的變量的函數(shù)。
二.特點
在函數(shù)執(zhí)行結(jié)束后不能銷毀,意思就是一般在函數(shù)執(zhí)行結(jié)束后在下一次調(diào)用時都會是一個全新的函數(shù)以前執(zhí)行的都會被銷毀,而閉包不會被銷毀,它會接著上一次的結(jié)果繼續(xù)執(zhí)行下去握爷。
三。閉包的優(yōu)缺點
1.閉包的缺點:閉包的變量不會被垃圾回收機制回收严里,會一直在內(nèi)存里新啼。
2.閉包的優(yōu)點:
????? 2.1.可以永久的常駐內(nèi)存(保留每次運行的結(jié)果并替換上一次執(zhí)行的結(jié)果)
???? 2.2不能從外部去干擾改變量,保證了數(shù)據(jù)的安全
3.閉包的使用場景
??????? 用來做關(guān)鍵數(shù)據(jù)的緩存作用
四刹碾。閉包的產(chǎn)生
1.函數(shù)嵌套函數(shù)
2.內(nèi)部函數(shù)引起內(nèi)部函數(shù)的變量或者參數(shù)燥撞,并使用return返回了引用該變量或者參數(shù)
例:
不是閉包的函數(shù)
是閉包的函數(shù)
但是要注意這里不能使用outer()()因為要定義一個變量去記錄(裝)outer函數(shù)里面的inner函數(shù)體與運行的結(jié)果(這里的結(jié)果運行一次會替換上一次運行的結(jié)果)
例:
每次重新引用函數(shù)的時候閉包也會是全新的它們互不影響,哪怕每次調(diào)用都是交叉的結(jié)果都不會有影響。