闭包
标准解释:
当函数可以记住并访问所在的词法作用域,即使函数是在当前词法作用域之外执行,此时就产生了闭包。
我们最为常见的闭包行为就是在函数中的嵌套,子函数可以访问外部作用域的变量,其实这种引用方法是词法作用域的查找规则,只能说是闭包的一部分。
以下代码清晰的展示了闭包
function foo() { var a = 2; function bar() { console.log(a); } rreturn bar; } var baz=foo(); baz(); //2————闭包效果
在foo()执行后,通常foo()的整个作用域都会被摧毁。但是闭包可以阻止这样的事情发生,bar()拥有涵盖foo()内部作用域的闭包,使得该作用域能够一直存活,以供bar()在之后任何时间进行引用。
bar()依然持有对该作用域的引用,而这个引用就叫做闭包。

浙公网安备 33010602011771号