JavaScript-闭包
# 闭包
闭包是什么 闭包是一个函数加上到创建函数的作用域的连接,闭包“关闭”了函数的自由变量
闭包可以解决什么问题
内部函数可以访问到外部函数的局部变量
function fun() { var a = 10 return function() { console.log(a); } } fun()()
1
2
3
4
5
6
7
8闭包可以解决的问题
var lis = document.getElementsByTagName('li') for(var i = 0;i<lis.length;i++)( (function(i){ lis[i].onclick = function(){ alert(i) } })(i) )
1
2
3
4
5
6
7
8
闭包的缺点
变量会驻留在内存中,造成内存损耗问题
解决:把闭包的函数设置为null
var lis = document.getElementsByTagName('li') for(var i = 0;i<lis.length;i++)( (function(i){ lis[i].onclick = function(){ alert(i) } lis[i] = null })(i) )
1
2
3
4
5
6
7
8
9内存泄漏(ie)
上次更新: 2024/08/14, 04:14:33