概念
函数和对其周围状态的引用捆绑在一起构成了闭包
周围状态,也就是词法环境。
闭包,可以让内部函数访问外部作用域,在Javascript中,每当函数被创建,就会在函数生产时生成闭包。
闭包的一些应用
闭包的使用的一些场景,柯里化,节流,防抖
最简单的一个节流
function throttle(fn,times){ // 整个throttle为周围状态,或者词法环境
let t1 = true // 相对return 的函数就是外部
return function(){
if(!t1){ // 内部使用
return false;
}
t1 = false
let time = setInterval(()=>{
fn.apply(this)
t1 = false
},times)
}
}
最简单的一个柯里化
function carling(fn,...args){
let length = fn.length //判断当前传入函数的长度
return function (...nextArgs){
var allArgs = [...args, ...nextArgs]
if(nextArgs.length == 0){ // 当没有参数的时候我们执行传进来的函数
return fn.apply(fn,allArgs)
}
return carling(fn,...allArgs)
}
}
简单的节流
function debounce(fn,delay){
let timer = null
return function (){
if(timer){
clearTimeOut(timer)
timer = setTimeOut(fn,delay)
}else{
timer = setTimeOut(fn,delay)
}
}
}
PS.说是闭包,其实我是来回顾防抖节流的,下次一定!!
本文深入探讨了闭包的概念及其在JavaScript中的应用,详细介绍了闭包如何让内部函数访问外部作用域,并通过实例展示了防抖(debounce)和节流(throttle)技术的实现方法。
1020

被折叠的 条评论
为什么被折叠?



