闭包是JavaScript中的一个难点,同时也是它的特色,JavaScript的很多高级应用都要依靠闭包来实现。以下是我学习闭包的记录,希望对你有些帮助。
var a = 99;
function f1() {
console.log(a);
}
f1();
function f1() {
var a = 99;
}
console.log(a);
function f1() {
var a = 99;
function f2() {
console.log(a);
}
}
function f1() {
var a = 99;
function f2() {
console.log(a);
}
return f2;
}
var result = f1();
result();
function A() {
var count = 0;
function B() {
count++;
console.log(count);
}
return B;
}
var C = A();
C(); // 1
C(); // 2
C(); // 3
function A(x) {
function B(y) {
console.log(x+y);
}
return B;
}
var C = A(3);
C(5); //8
function outer(){
var num = 0; //内部变量
return function add() { //通过return返回add函数,就可以在outer函数外访问了
num++; //内部函数有引用,作为add函数的一部分了
console.log(num);
};
}
var func1 = outer();
func1(); //实际上是调用add函数, 输出1
func1(); //输出2 因为outer函数内部的私有作用域会一直被占用
var func2 = outer();
func2(); // 输出1 每次重新引用函数的时候,闭包是全新的。
func2(); // 输出2