我有一个功能:
setInterval(function () {
var counter = 0;
(function() {
counter = counter + 1;
console.log(counter);
})(counter)
}, 1000)
为什么不增加计数器? (相反,它记录为1)。如何使它记录升序? (1,2,3,....)
答案 0 :(得分:5)
您可以使用一个函数,该函数返回一个函数作为计数器的闭包。
setInterval(function(counter) {
return function() {
console.log(++counter);
};
}(0), 1000);
答案 1 :(得分:4)
(function(closed_over_counter) {
setInterval(function() {
closed_over_counter++;
console.log(closed_over_counter);
}, 1000);
})(0);
由于使用的是IIFE而不是可以多次调用的函数,因此这毫无意义。您最好只在闭包内部声明变量。
(function() {
var counter = 0;
setInterval(function() {
counter++;
console.log(counter);
}, 1000);
})();
答案 2 :(得分:2)