nodejs学习笔记二:闭包和异步编程

39 篇文章 0 订阅
26 篇文章 1 订阅

闭包到底是什么鬼

闭包就是函数��,但是它可以继承并访问它自身被声明的那个作用域里的变量。当你将一个回调函数作为参数传递给另外一个进行i/o操作的函数时,回调函数稍后会被调用,神奇的是,在被调用时,回调函数会记住它自身声明时所在的上下文,并且可以访问该上下文及其父上下文里的所有变量,这个强大的特性就是Node成功的核心。

举个简单的jquery例子:

    (function(){
        var clickCount=0;
        $('button#mybutton').on('click',function(){
            clickCount++;
            alert('Clicked '+clickCount+' times.');
        });
    })();

用闭包的另一个好处是防止变量污染全局空间。

闭包如何辅助异步编程

在进行事件驱动编程时,从定义事件发生时执行的代码开始,然后将代码放入一个函数当中,最后将该函数作为一个参数进行传递以备稍后调用。

在JavaScipt中,函数操作并不是孤立地工作而是会记住它被什么时所在的上下文,这能让函数操作其声明时所在的上下文以及父上下文中所在的所有变量。

当你将回调函数作为参数进行传递时,它会在稍微某个时刻被调用,但即使声明回调函数的那个作用域已经返回,回调函数依然可以操作该作用域或者父作用域中的任意变量,在上述最后一个例子中,虽然回调函数时在jquery的click函数内部被调用,但是它依然可以访问或者操作clickCount变量。

这显示 应用闭包模式,可以从两方面获得极大好处:
1. 可以通过将状态变量传递给函数而不必维护它就可以进行事件驱动编程
2. JavaScript的闭包会为你维护状态变量

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值