资讯专栏INFORMATION COLUMN

再议javascript闭包

abson / 2288人阅读

摘要:在中闭包已经成了一个很神秘,让人高山仰止的存在。今天又对闭包进行了一番搜索,有了一种明悟闭包就相当于黑盒的钥匙。当你手握闭包,黑盒就能为你所用。通过访问外部变量,一个闭包可以维持这些变量。闭包经常用于创建含有隐藏数据的函数但并不总是这样。

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)这些变量。在内部函数和外部函数的例子中,外部函数可以创建局部变量,并且最终退出;但是,如果任何一个或多个内部函数在它退出后却没有退出,那么内部函数就维持了外部函数的局部数据。

闭包经常用于创建含有隐藏数据的函数(但并不总是这样)。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/79926.html

相关文章

  • 再议什么是云桌面

    摘要:目前云桌面已经成为企业学校基础设施的标配,不再是科技前沿的新宠。曾经有一种声音表示才是云桌面桌面虚拟化的唯一标准架构均不属于此范畴。虚拟化是一种技术手段,无论都属于虚拟化的传统技术架构也是云桌面的解决方案之一。  目前云桌面已经成为企业、学校IT 基础设施的标配,不再是科技前沿的新宠。高校建设电子教室、政企扩展办公地点… 云桌面都作为基础设备列入了一期采购。随着市场需求的增加,国内云桌面厂商...

    brianway 评论0 收藏0
  • 红黑树的删除

    摘要:红黑树的删除可能出现的情形讨论删除红黑树中一个结点,删除的结点是其子结点状态和颜色的组合。组合被删结点无子结点,且被删结点为红色此时直接将结点删除即可,不破坏任何红黑树的性质。 红黑树的删除 可能出现的情形讨论 删除红黑树中一个结点,删除的结点是其子结点状态和颜色的组合。子结点的状态有三种:无子结点、只有一个子结点、有两个子结点。颜色有红色和黑色两种。所以共会有6种组合。 组合1:被删...

    Forelax 评论0 收藏0
  • 单系统站内信数据库设计思路

    摘要:第一版设计需求单用户之间通信融合了用户反馈需求数据库设计内容和收发者存在一张表中表这里一条存两次,类似邮件服务。参考群发站内信的实现群发站内信的实现续两年后,再议站内信的实现百万级用户量的站内信群发数据库设计 第一版设计 需求 :单用户之间通信(融合了用户反馈需求) 数据库设计:Message内容和收发者存在一张表中 message表: 这里一条Message存两次,类似邮件服务。...

    G9YH 评论0 收藏0
  • 单系统站内信数据库设计思路

    摘要:第一版设计需求单用户之间通信融合了用户反馈需求数据库设计内容和收发者存在一张表中表这里一条存两次,类似邮件服务。参考群发站内信的实现群发站内信的实现续两年后,再议站内信的实现百万级用户量的站内信群发数据库设计 第一版设计 需求 :单用户之间通信(融合了用户反馈需求) 数据库设计:Message内容和收发者存在一张表中 message表: 这里一条Message存两次,类似邮件服务。...

    Achilles 评论0 收藏0

发表评论

0条评论

abson

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<