浅谈闭包
首先闭包是处于函数以内,闭包可 以理解为在一个函数内部的函数,并且可以 访问外部函数,相当于函数内部和外部联系 的桥梁。
闭包是为了重复使用变量,但是又 不变量不被污染。闭包在正式的项目中还是 很常用的。闭包会在它父函数的外部,改变父
函数内部的值,所以在使用过程中不要随便 改变父函数内部变量的值;闭包的形成会占 用大量内存,而且使用不当会造成内存泄漏 。
在操作闭包的时候,要注意闭包的 封闭性。闭包可以实现公有化变量,就是可 以被多个函数调用,但是这种操作需要搭配 立即执行函数
的相关操作来使用,这样就能 达到想要的效果,立即执行函数的特征就是 用完就销毁,()括号就是立即执行的意思
,例: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
立即执行的好处就是通过定义一个匿名函数 ,创建了一个新的函数作用域,相当于创建 了一个“私有”的命名空间,该命名空间的
变量和方法,不会破坏污染全局的命名空间 。所以闭包搭配立即执行一起使用时很方便的 ,也很实用。
总的来说,立即执行函数能够解决闭包中的状态保存问题;定义私有变量,防止全局污染;初始化数据。