再议javascript闭包
在javascript中闭包已经成了一个很神秘,让人高山仰止的存在。
今天有对闭包进行了一番搜索,有了一种明悟:闭包就相当于黑盒的钥匙。当你手握闭包,黑盒就能为你所用。
为什么这么说呢?这个想法来自于这篇文章:
function foo(x) {
var tmp = 3;
return function (y) {
alert(x + y + tmp);
x.memb = x.memb ? x.memb + 1 : 1;
alert(x.memb);
}
}
var age = new Number(2);
var bar = foo(age); // bar 现在是一个引用了age的闭包
bar(10);
如果一个函数访问了它的外部变量,那么它就是一个闭包。
注意,外部函数不是必需的。通过访问外部变量,一个闭包可以维持(keep alive)这些变量。在内部函数和外部函数的例子中,外部函数可以创建局部变量,并且最终退出;但是,如果任何一个或多个内部函数在它退出后却没有退出,那么内部函数就维持了外部函数的局部数据。
闭包经常用于创建含有隐藏数据的函数(但并不总是这样)。
关键字:JavaScript, 函数, 闭包, 变量
版权声明
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!