闭包函数
2020-10-09 本文已影响0人
lucky_yao
1:
闭包就是能够读取其他函数内部变量的函数。
这种写法就可以获取到函数内部的局部变量,b函数就是闭包
function a(){
var n=9;
function b(){
alert(n)
}
return b;
}
var num=a();
num();
2:闭包的用途
闭包可以用在许多地方。
它的最大用处有两个,一个是前面提到的可以读取函数内部的 变量,
另一个就是让这些变量的值始终保持在内存中。
3:闭包的缺点:
使用闭包的注意点 由于闭包会使得函数中的变量都被保存在内存中,
内存消耗很大,所以不能滥用闭包,
否则会造成网页的性能问题,
在 IE 中可能导致内存泄露。
解决方法是,在退出函数之前,
将不使用的局部变量全部删除。
闭包会在父函数外部,改变父函数内部变量的值。
所以,如 果你把父函数当作对象(object)使用,
把闭包当作它的公用方法(Public Method),
把 内部变量当作它的私有属性(private value),
这时一定要小心,不要随便改变父函数内 部变量的值。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
</body>
<script type="text/javascript">
// 1:闭包函数
// 2:闭包函数的作用
// 2.1想获取函数中的局部变量,那么久要用到闭包函数
// 2.2另一个就是让这些变量的值始终保持在内存中
//获取局部变量的案例
// function a(){
// var n=9;
// function b(){
// return n;
// }
// return b();
// }
// var c=a();
// alert(c)
//变量始终保存中内存中
// function fun(){
// var n=9;
// a=function(){
// n+=1;
// }
// function f2(){
// alert(n);
// }
// return f2;
// }
// var sum=fun();
// sum();//9
// a();
// sum();//10
// a();
// sum();//11
// a();
// sum();//12
// function fun(){
// var n=9;
// a=function(){
// n+=1;//n=n+1;
// }
// function f2(){
// alert(n);//9 10
// }
// return f2;
// }
// var sum=fun();
// sum();
// sum();
// sum();
// sum();
////1:第一种形式
// function fun(){
// var n=9;
// function sum(){
// alert(n)
// }
// return sum;
// }
// var c=fun();
// c();
//2:第2种形式
// function fun(){
// var n=119;
// function sum(){
// function dd(){
// alert(n)
// }
// return dd;
// }
// return sum;
// }
// fun()()();
function a(){
var b=2;
function c(){
alert(b);
}
return c;
}
a()
</script>
</html>