闭包如何工作?

时间:2011-09-11 09:51:17

标签: javascript closures

  

可能重复:
  How do JavaScript closures work?

function add(num){
    return function(num1){                
          return function(num2){                    
               return num + num1 + num2;
         };
    };
}

var add5 = add(7)((7))((7));
console.log(add5);

我已经尝试了很多JavaScript,因为我试图了解闭包的工作原理。

但后来我尝试了这个

var add5 = add(7)((7))((7));
console.log(add5); //result is 21

我看到它的方式,闭包是一种指向外部函数或其父函数的指针吗?

1 个答案:

答案 0 :(得分:2)

Closure是外部函数的范围,即使外部函数执行结束,内部函数也可以访问它。它是如何实现的,取决于JS解释器。

以下是来自MDN的文档:https://developer.mozilla.org/en/JavaScript/Guide/Closures