使用闭包避免全局污染
1 2 3 4 5 6 7 8 9 10
| var obj = (function(){ var a=2; return function(){ a++; alert(a); } })()
obj();
|
以上通过自调用函数简化了语法,闭包就是在函数内部返回一个函数的声明,在返回的函数中操作的变量会常驻在内存中,类似于c++里的static
使用闭包定义私有变量
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| var module = (function(){ var count=100; function aaa(){ count+=5; alert(count); } function bbb(){ count+=20; alert(count); } return { funcA: aaa, funcB: bbb } })()
|
解决IE浏览器下内存泄露问题
1 2 3 4 5 6
| window.onload = function(){ var oDiv = document.getElementById('div1'); oDiv.onclick = function(){ console.log(oDiv); } }
|
在以上事件中形成了闭包,IE浏览器下oDiv是不会被释放的,如果元素节点很大的话会损失很大一部分内存
1 2 3 4 5 6 7 8
| window.onload = function(){ var oDiv = document.getElementById('div1'); var oId = oDiv.id; oDiv.onclick = function(){ alert(id); } oDiv = null; }
|