先看一段JS代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
function a(){
var num = 0;
function b(){
num++;
console.log(num);
}
return b;
}
var add = a();
add(); // 1
add(); // 2
add(); // 3
|
这段代码的特点:
·函数a里面定义了一个函数b,函数b里面的操作让变量num自加的,最后一句是return b,将函数b返回了;
·add变量是指向了函数a的(有点像C的指针),函数a里面的函数b是被外部变量add引用了,函数b就形成了一个闭包了。
那闭包一般用来干嘛呢?
·在JavaScript模拟实现块级作用域,封装私有变量,防止污染全局变量
举个栗子