闭包,防抖和节流都是什么呢

闭包,它是一个函数,它是一个读取其他函数内部变量的函数,也就是说在一个函数内部返回的还是一个函数,它可以用于计数器困境和定时打印数值。

闭包的优点是可以延伸变量的作用范围,可以从函数外部去访问内部局部变量,还可以延长变量生命周期,当函数执行完后局部变量不释放继续保存在内存中。

闭包缺点,不安全是其一,为什么说不安全,由于函数可以从外部去访问内部,换个方向想,从外部也可以改变内部变量的值。性能差是其二,还从闭包优点来看,延长函数的生命周期是好事,可是函数中的变量都会被保存在内存中,这样内存消耗会很大的,很容易就造成网页的性能问题。

另外,防抖和节流也用到了闭包。防抖和节流一般用于鼠标操作

防抖就是说在一个规定的时间内,只有最后一次操作,这个事件才会成功。

// 防抖
function debounce(fn, wait) {
    let timer = null
    return function() {
        if(timer !== null){ clearTimeout(timer)  } 
        timer  = setTimeout(fn, wait);
    }
}
// 使用
document.documentElement.onmousemove = debounce(function(){
    console.log('dosomething...');
},2000)

节流是说在一个规定的时间内,不管你操作了多少次,都会当做一次事件。

throttle(fn, delay) { 
    var prev = Date.now()     
    return function() {        
        var now = Date.now()        
        if (now - prev > delay) {          
            fn()        
            prev = Date.now()       
        }     
    }    
}  
// 使用
document.documentElement.onmousemove = throttle(function(){
    console.log('dosomething...');
},2000)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值