了解闭包
+ 闭包的生成有三个必要条件(缺一不可)
1. 在函数 A 内部直接或者间接返回一个函数 B
2. B 函数内部使用着 A 函数的私有变量(私有数据)
3. A 函数外部有一个变量接受着函数 B
+ 形成了一个不会销毁的函数空间
闭包空间
+ 我们管这个不会销毁的 a 函数的执行空间叫做 闭包空间
+ 把函数 a 里面返回的 函数 b, 叫做函数a 的 闭包函数
+ 官方给的定义有一句话: 闭包 => 函数内部的函数
function a() {
// 这个 num 变量就是函数 a 的私有变量
var num = 100
return function b() {
console.log(num)
}
}
res 接受的是 a 函数执行以后的返回值
res 接受的就是函数 a 内部返回的一个复杂数据类型(函数b)
导致函数 a 的执行空间不会销毁
var res = a()
从现在开始, res 随时可以是一个 函数a 里面返回的 函数b
res 随时可以调用
res()
当 res 调用的时候, 打印 num
打印出来的就是 a 函数内部的私有变量 num 的值