JS闭包(Closure)

闭包(Closure):在一个函数中,可以访问到另一个函数中的局部变量,就是闭包现象

例子:

function fn() {
     var a = 10;
      return function () {
         return a;
    }
}
var test = fn();
console.log(test());

以上代码,test()会输出fn()函数当中的a局部变量,此时就是闭包现象。

var heros = document.getElementById('heros');
var list = heros.children;
for (let index = 0; index < list.length; index++) {
    var li = list[index];
    (function () {
        li.onclick = function () {
            console.log(i); //此处闭包了
        }
    })(i)
}

查看闭包现象:

可以通过浏览器控制台,打断点并进行跟踪,可以看到Scope区域内,有Closure产生,此时就是闭包

image.png

闭包注意⚠️:

闭包虽然是延展了作用域了,但是容易影响性能,因为闭包是延展作用域,本来作用域使用完后会立即释放掉,但因为延展的关系,并没有释放掉。

posted @ 2019-11-16 21:33  盖中盖好喝的钙  阅读(277)  评论(0)    收藏  举报