javascript – setInterval中的Closure计数器

我有一个功能

setInterval(function () {
        var counter = 0;
        (function() {
          counter = counter + 1;
          console.log(counter);
          })(counter)
       },1000)

为什么不增加柜台? (相反,它记录1的).如何使它登录升序号码? (1,2,3 ……)

解决方法

>您正在将参数传递给您的匿名函数,但您没有将该参数赋值给变量.你忘了把参数放在函数定义中.
>您正在每次迭代创建新变量,而不是在它们之间共享变量.你需要把你的逻辑彻底改变.

(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);
})();

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...