JavaScript中的闭包概念

@spiritree  January 14, 2017

以下摘自《JavaScript高级程序设计(第三版)》
《你不知道的JavaScript(上卷)》
并结合我自己的理解

  • 闭包的概念:闭包是指有权访问另一个函数作用域的的变量的函数

  • 这是一段展示闭包的代码

function foo() {
    var a = 2;
    function bar() {
        console.log(a);
    }
    return bar;
}
var baz = foo();
baz(); //2

函数bar()的词法作用域能够访问foo()的内部作用域,然后将bar本身作为foo()的返回值。因为bar()申明的位置在foo()内部,所以它拥有foo()内部作用域的闭包并一直存在。bar()存在着对该作用域的引用,这个引用称之为闭包。


添加新评论