Secret of the JavaScript Ninja 学习笔记 - 7

第二章 Closing in on closures

5.1 How closures work

一个晦涩的定义:A closure is the scope created when a function is declared that allows the function to access and manipulate variables that are external to that function.
另一个晦涩的定义:Closures allow a function to access all the variables, as well as other functions, that are in scope when the function itself is declared.
  <script>
    var later;
    
    function outerFunction() {
      var innerValue = "samurai";
      function innerFunction() {
        assert(innerValue, "I can see samurai");
      }
      later = innerFunction;
    }
    
    outerFunction();
    /**
     * Invokes the innerFunction through later. We can't invoke it 
     * directly because its scope (along with innerValue) is limited
     * to within outerFunction()
     */
    later();
  </script>

通过later()来激活innerFunction(). 此时innerFunction()仍然可以观察到innerValue.
When we declared innerFunction() inside the outer function, not only was the function declaration defined, but a closure was also created that encompasses not only the function declaration, but also variables tht are in scope at the point of the declaration.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值