Javascript 从 10 开始递减然后在 0 时做一些事情

Javascript decrement from 10 then do something when 0

我有一个函数,调用时会减 1。当用户报告某事时调用它。我希望能够存储它,然后在它达到 0 时执行一个操作。

function userReported() {

    console.log('user report ' + add());

    var add = (function () {
          var counter = 10;
          return function () {
            counter -= 1; 
            return counter;

          }

    })();

}

现在的问题是我可以 return 计数器所以它从 10 开始记录。但我遇到的问题是我似乎可以在 returning 之前添加一个 if/else计数器,因为它不存储变量。

我尝试了以下操作,但它不起作用,而且我不知道如何 return 某些东西 > 存储它,同时检查它的值。我也尝试了 while 循环但也失败了。

function userReported() {

    var limit = add;

    if ( limit <= 0 ) {
        console.log('Link does not work!'); 
        }
        else {
            console.log('user report ' + limit);
        }

    var add = (function () {
          var counter = 10;
          return function () {
            counter -= 1; 
            return counter;

          }

    })();


}

我如何着手创建一个值,increment/decrement 说值,然后当它达到一个数字时 -> 做点什么?

好的,如果您需要根据外部限制获取报告,您可以这样做:

var limit = 10;

function remove() {
  limit -= 1;
}

function userReport() {
  if (limit <= 0) {
    console.log("Link does not work!");
  } else {
    remove();
    console.log(`User report: ${limit}`);
  }
}

userReport();

如果那是你想要的,从 userReport 中删除 remove 函数并删除 limit 变量将使事情正常进行

您通常会使用 returns 在闭包中捕获计数器的函数来执行此操作。这允许返回的函数在多次调用中保持状态。

例如:

function createUserReport(limit, cb) {

    console.log('user report initiated' );

    return function () {
        if (limit > 0) {
            console.log("Report filed, current count: ", limit)
            limit--
        } else if (limit == 0) {
            limit--
            cb() // call callback when done
        } 
        // do something below zero?
    }
}

// createUserReport takes a limit and a function to call when finished
// and returns a counter function
let report = createUserReport(10, () => console.log("Reached limit, running done callback"))

// each call to report decrements the limit:
for (let i = 0; i <= 10; i++){
    report()
}

您当然可以 hard-code 将回调功能和限制数量放入函数本身,而不是传递参数。