闭包浅解析
Posted kenanyah
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了闭包浅解析相关的知识,希望对你有一定的参考价值。
资料来源:《你不知道的javascript(上卷)》
function foo(){
var a = 2;
function bar(){
console.log(a);
}
return bar
}
var baz = foo();
baz(); // 2 这就是闭包效果
在这个例子中,bar()在自己定义的词法作用域(foo函数内)以外的地方执行。
在foo()函数执行之后,按理说应该会被回收,但是由于闭包存在,bar()中拥有foo()内部作用域的变量a,导致foo()函数不会被销毁。
在baz被实际调用(调用内部函数bar()),可以访问变量a。
无论通过何种手段将内部函数传递到所在词法作用域以外,他都会持有对原始定义作用域的引用,无论在何处执行这个函数都会使用闭包。
以上是关于闭包浅解析的主要内容,如果未能解决你的问题,请参考以下文章
js ECMAscript原型,继承,this,bind,闭包,浅/深拷贝,正则表达式