闭包是一种比较特殊和函数,使用闭包能够访问函数作用域中的变量。从代码形式上看闭包是一个做为返回值的函数,如下代码所示:
<script>
function foo() {
let i = 0;
// 函数内部分函数
function bar() {
console.log(++i);
}
// 将函数做为返回值
return bar;
}
// fn 即为闭包函数
let fn = foo();
fn(); // 1
</script>
闭包的形成要素:内层函数 + 访问外层函数变量(函数作用域变量) ---- 闭包就是函数
总结:
-
闭包本质仍是函数,只不是从函数内部返回的
-
闭包能够创建外部可访问的隔离作用域,避免全局变量污染
-
过度使用闭包可能造成内存泄漏
注意:回调函数也能访问函数内部的局部变量。