在看《JavaScript权威指南》第六版这本书的函数章节的时候,一个段落使我对闭包有一种豁然开朗的感觉。
JavaScript的函数可以嵌套在其它函数中定义,这样它们就可以访问它们被定义时所处的作用域中的任何变量。这意味着JavaScript函数构成了一个闭包,它给JavaScript带来了非常强劲的编程能力。
理解闭包首先要了解嵌套函数的词法作用域规则。看一下这段代码:
var scope = "global scope"; //全局变量
function checkscope(){
var scope = "local scope"; //局部变量
function f() { return scope; } //在作用域中返回这个值
return f();
}
checkscope(); // =>"local scope"