今天看到新闻说java7将要有闭包了,那个...闭包是什么呀。
我总觉得那种内部类就有闭包的特性,可以引用外部那个类的成员变量什么的。可是今天看了这个显然是不对的呀。
能给我举个例子说明下什么是闭包么
[b]问题补充:[/b]
麻烦说清楚下呀...最好有个实例什么的 谢谢啦
今天看到新闻说java7将要有闭包了,那个...闭包是什么呀。
我总觉得那种内部类就有闭包的特性,可以引用外部那个类的成员变量什么的。可是今天看了这个显然是不对的呀。
能给我举个例子说明下什么是闭包么
[b]问题补充:[/b]
麻烦说清楚下呀...最好有个实例什么的 谢谢啦
闭包的两个特点:
1、作为一个函数变量的一个引用 - 当函数返回时,其处于激活状态。
2、一个闭包就是当一个函数返回时,一个没有释放资源的栈区。
例:
[code="java"]
<br>
function sayHello2(name) { <br>
var text = 'Hello ' + name; // local variable <br>
var sayAlert = function() { alert(text); } <br>
return sayAlert; <br>
} <br>
var sy = sayHello2('never-online'); <br>
sy(); <br>
[/code]
作为一个Javascript程序员,应该明白上面的代码就是一个函数的引用。如果你还不明白或者不清楚的话,请先了解一些基本的知识,我这里不再叙述。
上面的代码为什么是一个闭包?
因为sayHello2函数里有一个内嵌匿名函数
sayAlert = function(){ alert(text); }
在Javascript里。如果你创建了一个内嵌函数(如上例),也就是创建了一个闭包。