一、解析
本题实际上是JavaScript闭包的一个应用场景。counter函数作为返回值,其内部使用了外部函数createCounter的局部变量n,导致counter函数在返回时,n将长期被保存在内存当中,由此构成一个闭包。于是后续调用counter函数,n将被作为一个变量修改并保存,并且不会污染全局变量。
二、代码
var createCounter = function(n) {
return function() {
return n++;
};
};
三、注意
应使用n++,而不是++n,前者是返回当前值,再加1,后者是先加1,再返回值。