闭包12.17

一、 闭包

闭包就是能够读取其他函数内部变量的函数(函数里面套函数,内部函数访问外部函数变量),在本质上,闭包是将函数内部和函数外部连接起来的桥梁。
闭包中的变量会一直存储在内存中,类似全局变量

1.闭包的应用场景:

 //点击li时,输出自身的位置
        //  var lis=document.querySelectorAll('ul li');
        //  for(var i=0;i<lis.length;i++){
        //      lis[i].οnclick=function(){
        //          console.log(i);//4
        //      };
        //  }
        //i是一个全局变量  for循环执行完了之后i的值4

        //点击li,执行事件函数,打印i,全局变量的i值为4
        var lis = document.querySelectorAll('ul li');
        for (var i = 0; i < lis.length; i++) {
            (function (i) {//形参
                lis[i].onclick = function () {
                    console.log(i);//0 1 2 3
                };
            })(i);//实参
        }
    </script>

//当点击事件执行时,打印i,打印是局部变量i,不再是全局变量i

2.闭包经典面试题

  <script>
        // var arr=[];
        // for(var i=0;i<10;i++){
        //     arr.push(function(){
        //         console.log(i);
        //     })
        // }
        // arr[6]();//10
        //问题的解决
        var arr=[];
        for(var i=0;i<10;i++){
            arr.push(
                (function(i){
                    return function(){
                        console.log(i);
                    }
                })(i)
            )
        }
        arr[6]();//6
        arr[0]();//0
    </script>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值