【发布时间】:2011-05-28 12:01:22
【问题描述】:
到目前为止,我只在 javascript 中看到了闭包:
var name=...;
$(..).onclick(function() {
//here I can reference to name
});
c/c++/java/PHP 中是否存在此功能?
如果存在,有可用的 hello world 示例吗?
【问题讨论】:
-
你的例子不是closure。
-
您所说的称为 lambda 函数。关闭意味着别的东西。
-
@Gumbo,对我来说就像一个闭包。授予
onclick位无关紧要,尽管匿名函数确实会在范围内关闭,包括name就像描述的 OP 一样。你们吵什么? -
@davin:除非函数不引用不在其本地范围内的变量,否则它不是闭包。但现在我看到他的评论表示对外部
name的引用。 :) -
@Gumbo,不确定你的意思。即使在这种情况下,它仍然是一个闭包,只是该函数不会利用其闭包特性,并且该示例不会很有帮助,尽管它仍然是正确的。抛开实现细节不谈,javascript 中的每个函数表达式都是一个闭包。