首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

大伙儿来说说闭包吧,闭包的好处有哪些,坏处有哪些为什么要用闭包

2013-03-12 
大家来说说闭包吧,闭包的好处有哪些,坏处有哪些为什么要用闭包闭包会导致内存泄露为什么还要用闭包,不用闭

大家来说说闭包吧,闭包的好处有哪些,坏处有哪些为什么要用闭包
闭包会导致内存泄露为什么还要用闭包,不用闭包可不可以,
个人对闭包的理解是:“函数使用了函数外定义的变量了”
但是一般大家所说的闭包是指嵌套的函数么,如:


javascript function 闭包 泄露 js闭包
[解决办法]
写特效可以完全不用闭包。 有些时候要进行信息隐藏和封装可以使用闭包
[解决办法]
函数要访问一个变量的时候,就会先从自己的作用域开始,逐步向外层函数的作用域寻找那个变量的值。简而言之就是外层函数不能访问内层,内层能访问外层。没什么大不了的,平时都在用,没想过里面的机制罢了。
像这样直接在script标签里定义函数大家都写过。name是公有变量。公有域是sayName函数的外层,所以能够访问,这个就是闭包。

var name = 'name';
function sayName () {
  alert(name);
}

换个复杂点的例子:
var person = (function() {
   var name = 'name';
   var person = {};
   function sayName() {
     alert(name);
   }
   person.sayName = sayName;
   return person;
})();

这个例子定义了一个person对象,这个对象有个sayName方法。调用person.sayName()会显示'name'。看上去person是在函数的外层,不应该能访问到函数里的name。但其实调用person.sayName()的时候,调用的是那个内部函数sayName,而内部函数能访问外部函数的变量。这个就是闭包的用处。
[解决办法]
简单分析了下:
闭包的好处:
1.部分资源不需要一直存在(只在函数中出现)
2.数据不想被外部访问到(以免混淆)
坏处待分析//

[解决办法]
可以模拟一些OO的特性
[解决办法]
a 已经没了  b存在的话 里面会有一个 i

热点排行