什么是闭包?
function A() {
let a = 1
function B() {
console.log(a)
}
return B
}
在上面的代码中,函数A有一个局部变量a,有一个函数B,B中可以访问函数A中的局部变量A,这就形成了一个闭包。
闭包的作用是什么?
闭包常常用来「间接访问一个变量」
如果不用闭包,可以直接定义一个全局变量
window.test=100
但是如果不小心修改了这个值怎么办,
所以我们不能让别人直接访问这个变量。
这就就可以用局部变量。
但是局部变量别人有访问不到,所以就需要一个访问器(函数),让别人可以间接访问。
例如:
!function(){
let test= 100
window.addTest = function(){
test ++
}
window.cutTest = function(){
lives --
}
}()
其实我们经常在写代码的时候就用到了闭包,或者说形成了闭包,但是我们不一定发现这就是闭包,只是它满足了闭包的定义!
网友评论