// 书上看来的,挑出来分享一下 《你不知道的js》
function foo() {
var a=1;
function bar() {
console.log(a);
}
// bar()的词法作用域访问foo的内部作用域
// bar()在自己的词法作用域以外的地方执行了
return bar; //传递bar()
}
var func=foo();
func(); // 1
// 通过不同的标识符引用调用了内部的函数bar()
//bar() 被声明的位置,拥有涵盖foo()内部作用域的闭包,
// 使得该作用域一直存活,bar()在之后任何时间可进行引用。
// bar()依然持有对该作用域的引用,而这个引用就叫做闭包。、
// bar()函数在定义时的词法作用域以外的地方被调用。
闭包使得函数可以继续访问定义时的词法作用域。
function foo() {
var a=1;
function baz(){
console.log(a); //1
}
function bar(fn) {
fn();//闭包
}
}
foo();