JavaScript 闭包
什么是闭包?
简单理解:闭包=内层函数+外层函数的变量。正如前面所说的作用域链也会涉及到闭包,如下:
let a = 6;//全局作用域
function f() {
a = 7;//父级作用域
function d(){
a = 8;//自己的作用域
console.log(a);
}
d();
}
f();
闭包的官方概念:一个函数对周围状态的引用捆绑到一起,内层函数中访问到其外层函数的作用域。
闭包的作用:封闭数据,提供操作,外部也可以访问函数内部的变量。
闭包的写法:
// 闭包:外部可以使用函数内部的变量
function outer(){
let a = 10;
function fn() {
console.log(a);
}
return fn
}
const fun = outer()
fun()
上述代码,outer是一个闭包,其本身直接将子函数fn的值返回过来,此时并没与调用,知识单纯的返回值。
我们直接在全局作用域中就可以调用子函数fn