来自维基百科,免费的百科全书:关闭(计算机科学)
在计算机科学中,闭包是一种 在...中评估的函数 包含一个或多个的环境 绑定变量。当被召唤时, 函数可以访问这些变量。 明确使用闭包是 与函数式编程相关联 以及ML和。等语言 Lisp的。诸如对象之类的构造 其他语言也可以建模 关闭。
要在JavaScript中使用此功能,有人可以向我指出一个如何适用的示例吗?
答案 0 :(得分:11)
搜索“javascript closures”给了很多令人鼓舞的链接。前三个是这两个(第三个链接是第二个链接的重新格式化版本):
如果这些对您没有帮助,请解释原因,以便我们能够更好地帮助您。如果你在问这个问题之前没有搜索,那么请 - 下次再进行搜索:)
答案 1 :(得分:4)
(使用jQuery中的示例)
function SetClassOnHover(className){
$("td").hover(
function () {
$(this).addClass(className);
},
function () {
$(this).removeClass(className);
}
);
}
当在每个函数的范围内使用变量className时,闭包起作用。当SetClassOnHover退出时,两个函数必须在className上保留句柄,以便在调用函数时访问其值。这就是封闭所能实现的目标。
答案 2 :(得分:1)
闭包的一个实际例子是它们用于创建“私有”变量,如
function incrementer(){
var i=0;
this.increment=function(){
i++;
}
this.get=function(){
return i;
}
}
访问i的唯一方法是使用方法get,唯一的方法是使用方法增量。在类中,您可以这样做来模拟私有变量。