前言
闭包在javascript中一直占据着非常重要的地位,但是晦涩难懂。我们对该概念没有一个清晰、明了的认识,即使我们代码中遍布着闭包,但也是被动的,不能根据自己意愿使用。
在此,就让我们来了解一下什么是闭包?
什么是闭包
当函数可以记住并访问所在的词法作用域,即使函数是在当前词法作用域之外执行,这时就产生了闭包。
由此可见,常用的闭包就是我们写的回调函数。
示例1
函数bar存在用foo的词法作用域中,被函数foo返回了出去,保持着对foo作用域的引用
function foo() {
const a = 2;
function bar() {
console.log(a);
}
return bar;
}
const baz = foo();
baz(); // 这就是闭包