今天看到新闻说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里。如果你创建了一个内嵌函数(如上例),也就是创建了一个闭包。
闭包:
就是Function实例,外加对于Function实例的执行来说必需的、来自环境的本地变量。
在声明函数是,可以再声明外引用在作用域内的任何变量,甚至在声明之外已经超出作用域而关闭声明之后,这些变量仍然为该函数所支持。
js里的闭包就很出名的