首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Javascript从10递减,然后当0时做一些事情

Javascript从10递减,然后当0时做一些事情
EN

Stack Overflow用户
提问于 2019-06-24 09:05:45
回答 2查看 542关注 0票数 0

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

代码语言:javascript
复制
function userReported() {

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

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

          }

    })();

}

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

我尝试了下面的方法,但它不起作用,我不知道如何返回一些东西>存储它,同时检查它的值。我也尝试了一次while循环,但也失败了。

代码语言:javascript
复制
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;

          }

    })();


}

我如何开始创建一个值,递增/递减表示的值,然后当它达到一个数字->时做一些事情?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-24 09:28:35

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

例如:

代码语言:javascript
复制
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()
}

当然,您可以对回调功能进行硬编码,并将数量限制到函数本身中,而不是传递参数。

票数 2
EN

Stack Overflow用户

发布于 2019-06-24 09:22:57

好的,如果你需要得到一个基于外部限制的报告,你可以这样做:

代码语言:javascript
复制
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变量就可以了

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56728790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档