简述JavaScript中的闭包原理哟
2018年6月5日 晴 微风 温度 26-36°C
JavaScript中的闭包是指一种 相对的空间概念
我们拿我们所处空间来举例:
我们当下所坐在房间里,这个房间就形成了一个封闭的闭包空间
房间包裹着我们,我们在房间内部,可以访问房间中的任何东西,比如
空调,电视,电脑,水杯…
如果我们现在的书桌,有一个抽屉,这个抽屉则又形成了一个闭包空间
假设 抽屉里有一只猫 和 一些 玩具,那么那只猫则可以随意访问那些玩具,而我们则不能访问
那么相对于我们所在的小房间,则有一个大房间包裹着我们这个小房间,
大房间里的其他人无法直接访问到我们小房间的内部
如果我们想要访问 包裹着我们房间的其他大盒子 则只需要我们走出当前小盒子即可
我们需要记着三个空间概念:
- 当前空间
- 属于当前空间的子空间
- 当前空间的父空间
当前空间 -> 当前空间
当前空间 -> 当前空间的父空间
当前空间 !-> 当前空间的子空间
//代码说下
function a(){
var n = 0;
function inc() {
var s = 666;
n++;
console.log(n);
}
inc();
inc();
}
a(); //控制台输出1,再输出2
//在这里 如果a是当前空间时a 能访问自己空间中的数据n,但无法访问其子空间inc中的 数据s
//如果inc 是当前空间时 inc可以访问 属于当前空间的变量s ,
//也可以访问到包裹着自己的父级空间的a下的变量n