同一个函数形成的多个闭包的值都是相互独立的
amandakelake opened this issue · 0 comments
amandakelake commented
var t = function() {
var n = 99;
var t2 = function() {
n++
console.log(n)
}
return t2;
};
var a1 = t();
var a2 = t();
//这里理解的关键是: n 在 a1() 和 a2() 并不是公用的
a1(); // 100
a1(); // 101
a2(); // 100
a2(); // 101
var nAdd;
var t = function() {
var n = 99;
nAdd = function() {
n++;
}
var t2 = function() {
console.log(n)
}
return t2;
};
//var a1 = t()的时候,变量 nAdd 被赋值为一个函数 ,这个函数是function (){n++},命名为fn1吧
var a1 = t();
//变量 nAdd 又被重写了,这个函数跟以前的函数长得一模一样,也是function (){n++},但是这已经是一个新的函数了,我们就命名为 fn2
var a2 = t();
//所以这时候执行的事fn2
nAdd();
a1(); //99
a2(); //100