首页 > 其他 > 详细

浅谈闭包

时间:2019-11-12 20:18:24      阅读:87      评论:0      收藏:0      [点我收藏+]

浅谈闭包

首先闭包是处于函数以内,闭包可 以理解为在一个函数内部的函数,并且可以 访问外部函数,相当于函数内部和外部联系 的桥梁。

闭包是为了重复使用变量,但是又 不变量不被污染。闭包在正式的项目中还是 很常用的。闭包会在它父函数的外部,改变父 

函数内部的值,所以在使用过程中不要随便 改变父函数内部变量的值;闭包的形成会占 用大量内存,而且使用不当会造成内存泄漏 。

在操作闭包的时候,要注意闭包的 封闭性。闭包可以实现公有化变量,就是可 以被多个函数调用,但是这种操作需要搭配 立即执行函数

的相关操作来使用,这样就能 达到想要的效果,立即执行函数的特征就是 用完就销毁,()括号就是立即执行的意思 

,例:1.(function (){
console.log
(‘520‘);
})()

2.(function(){
console.log
(‘520‘);
}());

立即执行函数还可以被var定义:

var test = function(){

console.log 

(‘520‘);
}();

 

(function(){ ... })() 内部定义的变量不会和外部的变量发生冲突。

这里要注意,使用立即执行函数的时候要注 意两点一是函数体后面要有小括号(),二是 函数体必须是函数表达式而不能是函数声明 。

除了()可以立即执行外,+ - ! = 都可以 起到立即执行的左右,这些运算符的作用就 是将匿名函数或函数声明转换为函数表达式

例如:+function test(fun){

console.log(fun);

}(520) //输出520

立即执行的好处就是通过定义一个匿名函数 ,创建了一个新的函数作用域,相当于创建 了一个“私有”的命名空间,该命名空间的 

变量和方法,不会破坏污染全局的命名空间 。所以闭包搭配立即执行一起使用时很方便的 ,也很实用。

 

总的来说,立即执行函数能够解决闭包中的状态保存问题;定义私有变量,防止全局污染;初始化数据。

浅谈闭包

原文:https://www.cnblogs.com/hzqzwl/p/11844408.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!