amandakelake/blog

同一个函数形成的多个闭包的值都是相互独立的

amandakelake opened this issue · 0 comments

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