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

閉包
閉包就是函數(shù)嵌套函數(shù),內(nèi)部函數(shù)擁有外部函數(shù)的引用,導(dǎo)致這個(gè)引用無(wú)法被GC回收。
閉包的特點(diǎn)
保持引用,數(shù)據(jù)進(jìn)行緩存,不被垃圾回收機(jī)制回收。
用途
- 作為緩存 (緩存數(shù)據(jù)量小、加載快)
- 節(jié)流
- 防抖
- 函數(shù)柯里化
閉包的優(yōu)缺點(diǎn)
優(yōu)點(diǎn)
- 保持了引用 內(nèi)容不需要重新創(chuàng)建 加載速度快
- 擴(kuò)大了函數(shù)內(nèi)參數(shù)和變量的作用范圍
- 利用內(nèi)部函數(shù)來(lái)訪問(wèn)外部函數(shù)的參數(shù)或者變量,避免了數(shù)據(jù)污染
缺點(diǎn)
- 內(nèi)存占用大(一直保持引用),濫用容易造成內(nèi)存泄漏。
- 通過(guò)返回函數(shù)的形式進(jìn)行調(diào)用 需要不斷開辟函數(shù)空間 容易內(nèi)存溢出
防抖(debounce)概述
在規(guī)定時(shí)間范圍內(nèi)只執(zhí)行一次,執(zhí)行的是最后一次。(防止高頻觸發(fā) 在高頻觸發(fā)的時(shí)候只執(zhí)行一次)
節(jié)流 (throttle)
在限定時(shí)間內(nèi)執(zhí)行一次,執(zhí)行第一次。(減少觸發(fā)次數(shù))
函數(shù)柯里化(currying)
將多參數(shù)的函數(shù)分解成單一參數(shù)的函數(shù),主要是可以延遲傳入?yún)?shù)。
函數(shù)柯里化優(yōu)點(diǎn)
- 延遲傳入?yún)?shù)
- 參數(shù)復(fù)用
函數(shù)柯里化核心
參數(shù)個(gè)數(shù)沒(méi)到返回函數(shù),參數(shù)個(gè)數(shù)到返回結(jié)果
標(biāo)簽: