老师!请教一段代码
function counter(){
var n = 0;
return{
count: function(){
return n++;
},
reset: function(){
n = 0;
}
};
}
var c = counter(), d = counter(); // 创建两个计数器
c.count(); // => 0
d.count(); // => 0; 它们互不干扰
c.reset(); // reset() 和 count() 方法共享状态
c.count(); // => 0; 因为我们重置了c
d.count(); // => 1; 而没有哦重置 d
老师!
这是我在书上看到的关于闭包的一个例子,但是完全看不明白,所以敲下来请教一下老师!
正在回答
同学你好,问题解答如下:
1、n++运算先返回n值,然后再进行加1,所以第一次计算n++的结果是0
2、Counter函数调用几次,形成几个作用域。n是局部变量,所以操作当前作用域中n值的时候,其他作用域中的n值不受影响。C调用了reset方法,那么就是c作用域中的n值变为0,d作用域中的n值不改变。第二次调用count方法的时候,c作用域中n++的值为0,d作用域中n++的值为1
祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星