* 闭包是指有权访问另外一个函数作用域中的变量的函数,创建闭包常见方式就是在一个函数内部创建另外一个函数。
* 本质上,闭包就是将函数内部和函数外部连接起来的桥梁。
* 闭包应用场景:设置私有变量和方法,让这些变量的值始终保持在内存中,还有读取内部变量。
* 不适合场景:返回闭包的函数是个非常大的函数
* 闭包的缺点就是常驻内存,会增大内存使用量,使用不当很容易造成内存泄漏。
function fun(){
var num=5;
function f(){
var num=4;
console.log(num);
}
return f;//返回的是函数名f,函数名就代表函数地址、指针
}
var f1=fun();//相当于var f1= f
f1();//4 相当于f()
//闭包就是能够读取其他函数内部的函数 f()函数就是一个闭包
//闭包作用:可以读取函数内部的变量 让这些变量始终保持在内存中
/*function fun(a){
function f(a,b){
return a+b;
}
return f;//返回的是函数名f,函数名就代表函数地址、指针
}
var f1=fun(4);//相当于var f1= f(a,b)
console.log(f1(5,6));//11 相当于f(5,6)
*/
function fun(a,b){
function f(a){
return a+b;
}
return f;//返回的是函数名f,函数名就代表函数地址、指针
}
var f1=fun(4,5);//fun内部a=4,b=5
console.log(f1(5));//10 f内部的a=5 5+5
function out(){
var num=4;
function inner(){
return ++num;
}
return inner;
}
var fun=out();
console.log(fun());//5
console.log(fun());//6
console.log(fun());//7
var fun1=out(); //相互独立
console.log(fun1());//5
console.log(fun1());//6
console.log(fun1());//7
运行结果: