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产生,此时就是闭包

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

浙公网安备 33010602011771号