【发布时间】:2013-07-28 16:12:16
【问题描述】:
我想知道为什么这段代码不起作用,
var uniqueInteger = function() {
var counter = 0;
return function() { return counter++; }
};
console.log(uniqueInteger()()); // 0
console.log(uniqueInteger()()); // 0
console.log(uniqueInteger()()); // 0
console.log(uniqueInteger()()); // 0
而这段代码确实如此。唯一的区别是让函数自调用而不是在 console.log() 中调用它
var uniqueInteger = (function() {
var counter = 0;
return function() { return counter++; }
}());
console.log(uniqueInteger()); // 0
console.log(uniqueInteger()); // 1
console.log(uniqueInteger()); // 2
console.log(uniqueInteger()); // 3
我对 JS 很陌生,所以请原谅我的菜鸟。谢谢!
【问题讨论】:
-
不同之处在于,在您的第一个示例中,您总是调用
uniqueInteger,因此总是重新定义变量counter。
标签: javascript closures self-invoking-function