再议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)这些变量。在内部函数和外部函数的例子中,外部函数能够建立部分变量,而且终究退出;然则,假如任何一个或多个内部函数在它退出后却没有退出,那末内部函数就保持了外部函数的部分数据。

闭包常常用于建立含有隐蔽数据的函数(但并不老是如许)。

    原文作者:King
    原文地址: https://segmentfault.com/a/1190000005901704
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞