日期:2014-05-16  浏览次数:20445 次

【在线等】=========求 javascript 闭包的好处=========
除了用闭包少几行代码外还有什么好处啊?

最好举个实例 来对比下。

有没有非用闭包的例子啊?

------解决方案--------------------

一个经典的例子
JScript code

function addGenerator(num)

------解决方案--------------------
JScript code
function addGenerator(num)

{
  return funciton(toAdd) {
     return num + toAdd
};
}

------解决方案--------------------
还有变量的隐藏问题 
比如说 你不希望你绑定一个全局函数被拿来调用 可以使用自执行的匿名函数。这个应该也是一个好处

------解决方案--------------------
1.减少命名混杂问题
2.事件代理改变this
3.可以开辟一个独立的作用域存储变量
如 var m = function(){
var num=1;
return function(){
return num++
}
}()
m()//没掉一次num都加一
------解决方案--------------------
探讨
好==>还

------解决方案--------------------
探讨
1.减少命名混杂问题
2.事件代理改变this
3.可以开辟一个独立的作用域存储变量
如 var m = function(){
var num=1;
return function(){
return num++
}
}()
m()//没掉一次num都加一

------解决方案--------------------
探讨

引用:
1.减少命名混杂问题
2.事件代理改变this
3.可以开辟一个独立的作用域存储变量
如 var m = function(){
var num=1;
return function(){
return num++
}
}()
m()//没掉一次num都加一


第三点没错,不过有内存泄漏的危险 嘿嘿

------解决方案--------------------
http://www.wxwdesign.cn/article/skills/closure_memory_ie.htm
------解决方案--------------------
高手如云
------解决方案--------------------
up up
------解决方案--------------------
用闭包不会无意中改写了全局变量值而不知。
------解决方案--------------------
不是很会,学习了。
看帖必回帖!
------解决方案--------------------


闭包减少全局变量、减少内存垃圾、避免命名冲突
------解决方案--------------------
探讨

引用:
闭包减少全局变量、减少内存垃圾、避免命名冲突


那有没有 非用 闭包不可的例子啊?

------解决方案--------------------
这个问题就象1 + 1 = 2有什么好处?

这个不是有没有好处的问题,这是游戏规则。

你可以根据自己的需要组合。

什么东西都不是非用不可的,你还可以换方法、换语言、换职业。


------解决方案--------------------
我是个新手,不过我觉得闭包的优势在于自己实际应用中该怎么用,
在其他不支持闭包的语言中:
a = 1;
function test(any){
return any+1;
}
print(test(a));

而闭包中
a = 1;
function test(){
return a+1;
}
alert(test());