浅谈闭包、匿名函数

2019年7月4日 0 条评论 13 次阅读 0 人点赞

匿名函数

没有名称的函数,注意匿名函数自执行是产生闭包的一种情况。

function(*arg)
{
    //code
}

闭包

专业说法:函数调用返回后一个没有释放资源的栈区。
哈哈哈,看不懂很正常,简单来说,a函数调用返回时自身的资源会被销毁,但有个b函数把a里部分资源锁在了自己函数区域内,故a返回时并没有释放这部分的资源,故b函数内可以继续使用这些资源,这种现象叫闭包。

function fn{
            var arr = [];//用来存函数的数组
            for(var i = 0; i < 3 ; i++){
                //把函数压入数组,但此时函数并没有执行
                arr.push(function(){
                    console.log(i);//打印i的值
                });
            }
            return arr;
        }
        var arrFn = fn();
        arrFn[0]();//打印的值是3
        arrFn[1]();//打印的值也是3
        arrFn[2]();//打印的值还是3
        //资源 i 没有被释放,每个匿名函数都调用了那个没释放资源的栈区里的资源 i
头像

didi

这个人太懒什么东西都没留下

文章评论(0)