闭包原理及使用场景

闭包

闭包指有权访问另一个函数作用域中变量函数

函数套函数,内部函数访问外部函数变量,必须return,从而避免了变量被销毁

    //这个例子中,闭包就是fn()函数
    function fn(){
      var num=1;
      function fun(){
        console.log(num);
      }
        return fun;
    }

有些人可能会问到,既然闭包这么麻烦,为什么不使用全局变量呢?是因为这种临时变量如果大量在全局中,会影响访问速度。如果有一个处理过程很耗时的函数,我们就要先将计算出的值存储起来,当调用这个函数时,会先在缓存中查找,找不到才会进行计算并更新缓存。闭包可以做到这一点,因为他不会释放外部的引用,从而函数内部的值得以保留。

闭包demo

点击小li输出索引

传统操作

    //1.利用动态添加属性的方式
    var lis =document.querySelector('.nav').querySelectorAll('li')
    for(var i=0;i<lis.length;i++){
      lis[i].index=i;
      lis[i].onclick = function(){
        // console.log(i);//不用自定义属性index,输出的都是4,因为内部访问不到
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值