javascript - 闭包是如何工作的?

标签 javascript closures

<分区>

Possible Duplicate:
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

在我看来,闭包是一种指向外部函数或其父函数的指针吗?

最佳答案

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

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

关于javascript - 闭包是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7377434/

相关文章:

javascript - 使用 javascript/jquery 闭包在 ul >li 层次结构中级联值

javascript - 如何删除包含除特定属性之外的所有属性的标签

javascript - AsyncData 与 nuxtServerInit

javascript - 如何在我的 chrome 扩展中获取其他 chrome 扩展的 DOM 访问

c++ - 使用带闭包的 lambda 回调

ios - block 内、结构内、函数内变量的作用域

javascript - 使用 javascript 创建登录代码

Javascript 强制更改出现在页面完全加载之前

javascript - Parse.com 和关闭

ios - 返回另一个 block 内的 block 有时会延迟