以下内容是引用或者借鉴别人的,自己只是做个笔记,方便学习。理解错误的地方,欢迎评论。如有侵权,私聊我删除,未经允许,不准作为商业用途
闭包:将方法内部变量声明为局部(私有),致使外部不能直接引用,因此通过方法访问和操作内部变量,变量的值始终保持在内存中
- 最简单闭包实例
function f1() {
var n = 999;
function f2() {
alert(n);
}
return f2;
}
var result = f1();
result(); // 999
console.log(n) //error
- 返回多个变量
function f1() {
var n = 999;
function f2() {
n++;
}
function f3() {
n = n-2;
}
function f4() {
return n;
}
return {
f2,
f3,
f4
};
}
var result = f1();
result.f4(); //999
result.f2();
result.f4(); //1000
result.f3();
result.f4();//998
var result2 = f1();
result2.f4(); //999
- 带参数
function f1(x) {
var n = x;
function f2(y) {
var m = y;
return n + m;
}
function f3(y) {
var m = y;
return n - m;
}
function f4(y) {
var m = y;
return n * m;
}
return {
f2,
f3,
f4
};
}
var result = f1(10);
console.log(result.f2(3)) //13
console.log(result.f3(3)) //7
console.log(result.f4(3)) //30
网友评论