以下说的闭包是指JavaScript中的闭包
闭包:闭包就是能够读取其他函数内部变量的函数,在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解为定义在函数内部的函数,在本质上,闭包是将函数内部和函数外部连接起来的桥梁
其实每一个函数都是闭包,都可以访问函数外部的局部变量,只不过函数内部嵌套函数是更高级的闭包,可以访问另一个函数作用域中的变量
function cnt(){
var i = 0;
function inner(){
console.log(i);
i++;
}
return inner;
}
var result = cnt();
result();
result();
result();
控制台的结果0
1
2
return inner 连接了内部函数inner和外部函数cnt,inner和cnt互相依赖,所以i一直保存在内存中
闭包的作用:1访问函数内部的变量 2使变量始终保存在内存中
闭包的作用域:内部函数可以访问外部函数的变量和参数,如果要查询变量的类型,会向上自动查询直到原型,如有有则返回,没有则返回underfine,外部函数是不能访问内部函数的。