谈谈我对闭包的理解
在JavaScript中, 全局作用域不能访问函数作用域中的变量
function fun(){
let a = 10;
}
console.log(a) //a is not defined
外部函数作用域不能访问内部函数作用域的变量,而内部函数作用域可以访问外部函数作用域中的变量
function outer(){
let a = 10;
console.log(b) //b is not defined
function inner(){
let b = 20;
console.log(a) //10
}
}
为了访问函数内部的变量,在函数内部定义一个函数去访问函数内的变量并返回到外部作用域,这就是闭包
function outer(){
let a = 10;
return function(){
console.log(a)
}
}
let func = outer()
func() //10