f2函数就是闭包
闭包最大的特点,就是它可以“记住”诞生的环境
闭包的最大用处
- 可以读取函数内部的变量
- 让这些变量始终保持在内存中,即闭包可以使得它诞生环境一直存在。
- 封装对象的私有属性和私有方法、
读取函数内部变量
function f1(){
var n=999;
function f2(){
console.log(n);
}
return f2;
}
var result=f1();
result()//999
让变量始终保持在内存中
```javascript function createIncrementor(start){ return function(){
} }return start++;
var inc=createIncrementor(5) inc() //5 inc() //6 inc() //7
start 是函数createIncrementor 的内部变量,通过闭包,start状态被保留。闭包可以看着是函数内部作用域的一个接口
<a name="OlEIU"></a>
#### 封装对象的私有属性和私有方法
```javascript
function Person(name){
var age;
function setAge(n){
age=n;
}
function getAge(){
return age
}
return {
name:name,
getAge:getAge,
setAge:setAge
};
}
var p1=Person('张三')
p1.setAge(25)
p1.getAge() //25