本文主要介绍对js闭包的理解,通过示例代码非常详细的介绍,对大家的学习或者工作有一定的参考价值。有需要的朋友下面和边肖一起学习。
封闭是js的一大特色,也是一大难点。简单来说,所谓闭包就是函数可以访问其函数之外的作用域内的变量。
闭包的三个特征是:
1.函数嵌套函数
2.内部函数可以访问外部函数的变量。
3.参数和变量将不会被回收。
例如:
功能测试(){
var a=1;
返回函数(){
警戒(一);
}
}
var try=test();
try();//弹出a的值。
在这个例子中,变量A在测试方法外部是不可访问的,但是在测试方法内部,嵌套了一个匿名函数,该函数由return返回。测试范围内的变量A可以在匿名函数中访问。并且在执行测试方法时,变量A占用的内存不会被释放,从而可以访问嵌套的函数。
闭包的作用是可以通过闭包设计私有变量和方法。
例如,在java中创建perosn类,它包含私有变量名。
公共类人员{
私有字符串名称=' wy
公众人物(val){
name=val
}
公共void集合名称(val){
name=val
}
公共字符串getName(){
返回名称;
}
}
在js中实现类java的类创建功能;
(函数(){
var name='王宇';
Person=function (val) {
name=val
}
person . prototype . set name=function(val){
name=val
}
person . prototype . getname=function(){
返回名称;
}
})();
var person1=新人(' SJ ');
alert(this . name)//未定义,因为无法在函数范围之外访问它
alert(person 1 . getname());//sj
函数中的名称因为在函数的作用域内,所以不能从外部访问,但是可以通过创建一个person对象,调用person的方法来达到修改和访问名称值的目的。类似于java类中的私有变量,不能从外部访问,只能通过类方法访问。
看看私有变量的另一个例子:
var aaa=(function(){
var a=1;
函数bbb(){
a;
警戒(一);
}
函数ccc(){
a;
警戒(一);
}
返回{
B:bbb,//json结构
c:ccc
}
})();
alert(AAA . a)//未定义
AAA . b();//2
aaa.c() //3
总结:
1.闭包是指一个函数可以访问另一个函数范围内的变量。创建闭包最常见的方法是在一个函数中创建另一个函数,并通过另一个函数访问它的局部变量。闭包的缺点是内存驻留,会增加内存占用,使用不当容易导致内存泄漏。
2.你不必担心到底什么是结束。事实上,你写的每一个函数都算一个闭包,哪怕是一个全局函数。当你访问函数外的全局变量时,它就是闭包的体现。
以上是对js闭包的理解和边肖介绍的动画的详细集成。希望对你有帮助。如果您有任何问题,请给我留言,边肖将及时回复您。非常感谢您对我们网站的支持!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。