Javascript 两个不同的计数器

标签 javascript

我遇到了这个问题,但不知怎的我无法解决它。我需要我的函数来打印 counter1 (1, 2, 3),然后我需要 counter2 从零开始计数,而不是继续 counter1。 (counter1 和 counter2 异步递增) 我需要打印计数如下:1,2,3,1,2,3。

  function ukol2() {
      var count = 0;
      function makeCounter() {
        return function() {
          count++;
          console.log(count);
        };
      }

      var counter1 = makeCounter();
      counter1(); //1
      counter1(); //2
      counter1(); //3

      var counter2 = makeCounter();
      counter2(); //4
      counter2(); //5
      counter2(); //6
    }

最佳答案

您的 count 变量是全局变量,请将其放入您的函数 makeCounter 中。

function ukol2() {
  function makeCounter() {
    let count = 0;
    return function() {
      count++;
      console.log(count);
    };
  }

  var counter1 = makeCounter();
  counter1(); //1
  counter1(); //2
  counter1(); //3

  var counter2 = makeCounter();
  counter2(); //4
  counter2(); //5
  counter2(); //6
}

ukol2();

看到了吗?现在您的计数器独立递增。

更新:根据 @DiamondDrake 的建议:

将此 var count = 0; 更改为 let count = 0; 以进行范围界定

资源

Let

The let statement declares a block scope local variable, optionally initializing it to a value.

关于Javascript 两个不同的计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48507707/

相关文章:

javascript - 纯 javascript 折叠导航栏

javascript - 减少 CSS 中的文件大小?

javascript - 页面开始时加载表 css

javascript - Browserify 来缩小和连接文件

javascript - 扩展 Javascript 语法以添加输入

javascript - 在 Leaflet 中显示来自 geojson 的 map 时设置缩放

javascript - AngularFire - 等到在 Controller 中检索到用户数据

javascript - 如何从数组中删除作为嵌套对象的元素

javascript - 尝试使用 consign 连接 mysql 和 Node js 时出现未定义问题

javascript - 删除 javascript 字符串中的制表符空格或换行符