闭包:函数a中有函数b ,函数b可以访问函数a中的变量和数据,此时就形成了闭包。
闭包的模式:函数模式的闭包,对象模式的闭包
作用:缓存数据,延长作用域链
缺点:缓存数据 造成内存占用
下面是函数模式闭包例子
functhion f1(){
var num =10;
function f2(){
console.log(num)
}
f2();
}
f1();//10
下面是对象模式闭包例子
function f1(){
var num =10;
var obj ={
age:num
};
console.log(obj.age)//10
}
f1();
再来举个缓存数据的例子
function f1(){
var num =10;
return function(){
console.log(num); //10
}
}
var ff = f1();
ff();
function f1(){
var num =10;
return function(){
console.log(num); //10
return num;
}
}
var ff = f1();
var result =ff();
console.log(result) //10 外部能拿到