在javascript闭包中访问函数中的局部变量为什么要这样做呢?
function f1(){
var n="tanzongpei";
return n;
}
var a=f1();
alert(a);
我这样直接返回里面的变量出来也可以呀?为什么要在里面在放一个函数,再返回里面的局部变量呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
你这样的写法,当函数运行完后,执行环境被销毁,你实际上得到的只是n这个值,之后你也无法再获取到当时函数执行时执行环境中的变量。
而图中的写法,因为返回的是函数,所以函数的执行环境不会被销毁,根据作用域链的原理,你可以使用返回的这个函数访问它的执行环境中的局部变量,而外层函数的执行环境也会保留。
闭包
可以保持变量值
,达到私有变量
的作用,这个变量在函数返回之后还存在,在这之后还可以使用。但是你这样的话,返回之后n
就不会存在了。使用闭包是为了防止污染全局环境,在闭包里面用一个匿名函数返回变量,能够让变量一直驻留在内存中,不会出现函数执行完之后被垃圾回收机制释放掉。
其实这样可能更容易理解:
换个教材吧,你贴的这个完全不知所谓
防止冲突 一切都是私有化,节省内存