JS闭包
函数与对其状态即 词法环境 ( lexical environment )的引用共同构成 闭包 ( closure )。也就是说,闭包可以让你从内部函数访问外部函数作用域。在JavaScript,函数在每次创建时生成闭包。 词法作用域 请看下面的代码: function init() { var name = "Mozilla"; // name 是一个被 init 创建的局部变量 function displayName() { // displayName() 是内部函数,一个闭包 alert(name); // 使用了父函数中声明的变量 } displayName(); } init(); init() 创建了一个局部变量 name 和一个名为 displayName() 的函数。 displayName() 是定义在 init() 里的内部函数,仅在该函数体内可被获取。请注意, displayName() 内没有自己的局部变量,然而它可以访问到外部函数的变量,所以 displayName() 可以使用父函数 init() 中声明的变量 name 。 运行该代码后发现, displayName() 内的 alert() 语句显示出了 name 变量的值(该变量在父函数中声明)。这个 词法作用域 的例子描述了引擎是如何解析嵌套函数中的变量的。词法(lexical)一词表明