闭包的简单理解

首先了解变量作用域

变量作用域的不同分为两种:全局变量和局部变量

  1. 函数内部可以使用全局变量
  2. 函数外部不可以使用局部变量
  3. 当函数执行完毕。本作用域内的局部变量会销毁

什么是闭包?

闭包是指有权访问另一个函数作用域中变量函数。-----JavaScript高级程序设计

//闭包:fun这个函数作用域访问了另一个函数fn里面的局部变量num
function fn() {
    var num = 10;

    function fun() {
        console.log(num);
    }
    fun();
}
fn(); //输出10
function fn() {
    var num = 10;

    function fun() {
        console.log(num);
    }
    // fun();
    return fun;
}
// fn(); //输出10
var f = fn();
f(); //输出10

闭包的作用:延伸了变量的作用范围。

闭包的应用

<ul>
    <li>小猪</li>
    <li>小狗</li>
    <li>小狼</li>
    <li>小猫</li>
</ul>
<script>
    //点击每个li的时候输出编号例如点击小猪输出0
    //普通做法,添加一个index属性
    var lis = document.querySelector("ul").querySelectorAll("li");
    for (var i = 0; i < lis.length; i++) {
        lis[i].index = i;
        lis[i].onclick = function() {
            console.log(this.index);
        }
    }
</script>
//使用闭包做法 用一个立即执行函数接受i
//立即执行函数也称为小闭包,因为里面的任何一个函数都可以使用i这个变量
for (var i = 0; i < lis.length; i++) {
    (function(i) {
        lis[i].onclick = function() {
            console.log(i);
        }
    })(i)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值