```javascript
```javascript
var a =0;functionb(){++a;
console.log("这是全局变量a",a);return a;}
console.log("这是未改变的全局变量a",a,"这是函数b():",b(),b(),b(),"这是改变后的全局变量a",a);
functionf1(){var n =999;nAdd=function(){n+=1};//没有使用var声明,是一个全局变量,匿名函数,匿名函数本身也是一个闭包functionf2(){
console.log("闭包n的值:",n);}return f2;}var result =f1();result();// 999nAdd();result();// 1000
//闭包引起的内存泄漏,解决方法
// 1: 基本方法就是清除这种循环
```powershell
functionouter(){var one = document.getElementById("one");
one.onclick=function(){}}
window.onunload=function(){var one = document.getElementById("one");
one.onclick =null;}
// 2: 遍历某一元素节点极其所有后代元素 ,node:所有要清除的节点 func:进行处理的函数
```javascript
function walkTheDOM(node,func){
func(node);
node = node.firstChild;
while (node){
walkTheDOM(node,func);
node = node.nextSibling;
}
}
//3: 清除dom节点的所有引用,防止内存泄漏, node:所要清除的元素节点
function purgeEventHandlers(node){
walkTheDOM(node,function(e){
for(var n in e){
if(typeof e[n] ==='function'){
e[n] = null;
}
}
})
}
function purgeEventHandlers(node){
walkTheDOM(node,function(e){
for(var n in e){
if(typeof e[n] ==="function"){
e[n] = null
}
}
})
}
//局部变量 function myFunction(){ var local ="121"; console.log(local,"查看局部变量,函数体内"); } myFunction();// console.log(local,"查看局部变量"); /* 在函数体内var声明一个局部变量,在函数体内有用,在函数体外调用为not definde;局部变量在函数开始执行的时候创建,函数执行完之后局部变量自动销毁 局部变量自动销毁是js内部.