function student() {
var age = 22
function getUser() {
var name = '张三'
console.log('姓名:'+name,'年龄:'+age)
}
return getUser
}
var fn = student()
fn() // 姓名:张三 年龄:22
闭包有三个特性:
- 函数嵌套函数
- 函数内部可以使用外部的参数和变量
- 参数和变量不会被GC回收
闭包的好处:
- 变量长期存储在内存中
- 避免全局污染
- 私有成员的存在
闭包的缺点:
- 长期存储在内存,增加内存的使用
- 使用不当容易造成内存泄漏