一大早有人说 闭包是干啥的 我咋写项目也没用到过 哎嘿
突发奇想写一点吧
闭包就是能够读取其他函数内部变量的函数。由于在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数“。在本质上,闭包是将函数内部和函数外部连接起来的桥梁(摘自百度百科)
个人理解 闭包就是函数嵌套函数
闭包的特点很鲜明,闭包内,变量无法释放,无法被直接访问;闭包可以被延迟执行
var haha = (function () {
var a = 0;
return function () {
console.log(a);
return a++;
}
})();
haha()
haha()
haha()
那么请你复制这段代码 打开F12 控制台 放进去
那么现在 可以看到了这个数字是在增加的 是按照原来的变量依次增加 也就达到了它的目的 这个变量是不会被垃圾回收机制回收的变量 所以永久驻留在内存中
那么 什么时候需要用到闭包 呐 给你一个回调函数 你说它是不是闭包 答案是肯定的
1. 管理私有变量和私有方法,将对变量(状态)的变化封装在安全的环境中
2. 将代码封装成一个闭包形式,等待时机成熟的时候再使用,比如实现柯里化和反柯里化(概念请参见http://www.zhangxinxu.com/wordpress/2013/02/js-currying/(张大神 解释的狠清晰))
当然也有一些缺点 由于闭包内的部分资源无法自动释放,容易造成内存泄露
好吧 不码字了 赶项目去
浙公网安备 33010602011771号