不在对作用域多做解释,直接进入闭包
往往在查询闭包时,我们会得到这样一句话:在函数外部可以访问到函数内局部变量。首先对这句话做一下解释:
对于函数内部的变量我们在全局内无法获取到

如图我们在全局打印a的时候得到的是undefined
而如果我们在函数fn内部定义一个函数:

很明显fn1函数内的a==3
那么如果我们把fn1这个函数扩展到fn之外,也就是全局环境内时,我们可以在全局内访问fn1,而fn1又可以访问局部变量a
下面是将fn1升级为全局变量的方法:
function f(){
var b = "b";
return function(){
return b;
}
}
这个函数有一个局部变量b,他在全局空间不可见
而如果我们通过一个变量来接收一下f()的返回值:
var n = f();
n()====>"b"
这样我们就拿到了局部变量b的值
网友评论