什么是闭包呀

今天看到新闻说java7将要有闭包了,那个...闭包是什么呀。
我总觉得那种内部类就有闭包的特性,可以引用外部那个类的成员变量什么的。可是今天看了这个显然是不对的呀。
能给我举个例子说明下什么是闭包么

[b]问题补充:[/b]
麻烦说清楚下呀...最好有个实例什么的 谢谢啦

闭包的两个特点:

1、作为一个函数变量的一个引用 - 当函数返回时,其处于激活状态。
2、一个闭包就是当一个函数返回时,一个没有释放资源的栈区。

例:

[code="java"]
<br> function sayHello2(name) { <br> var text = &#39;Hello &#39; + name; // local variable <br> var sayAlert = function() { alert(text); } <br> return sayAlert; <br> } <br> var sy = sayHello2(&#39;never-online&#39;); <br> sy(); <br> [/code]

作为一个Javascript程序员,应该明白上面的代码就是一个函数的引用。如果你还不明白或者不清楚的话,请先了解一些基本的知识,我这里不再叙述。

上面的代码为什么是一个闭包?
因为sayHello2函数里有一个内嵌匿名函数
sayAlert = function(){ alert(text); }
在Javascript里。如果你创建了一个内嵌函数(如上例),也就是创建了一个闭包。

闭包:
就是Function实例,外加对于Function实例的执行来说必需的、来自环境的本地变量。
在声明函数是,可以再声明外引用在作用域内的任何变量,甚至在声明之外已经超出作用域而关闭声明之后,这些变量仍然为该函数所支持。

js里的闭包就很出名的

看看一些文章
http://www.iteye.com/search?type=all&query=js%20闭包