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