每次运行功能时增加值

Gop*_*216 13 javascript

所以我需要一个函数来增加变量的值,比如说n = 0.当函数运行时,此变量的值必须递增,并且不应再次等于0.例如,请考虑以下代码:

function increment(){
  var n = 0;
  n++;
  return n;
}
Run Code Online (Sandbox Code Playgroud)

现在每次运行此函数时,您得到的值为1.但我的要求是,如果您第一次运行此函数,它应该是1,如果您第二次运行它,它应该是2,依此类推.除非你刷新html页面并再次运行该函数,否则它不应该等于0.任何人都可以帮助我吗?

我是编码的新手,感谢任何小帮助.提前致谢!!!

Xot*_*750 30

创建一个closure以保存该值

闭包是指独立(自由)变量的函数.

简而言之,闭包的父函数中的变量仍然与父类的范围绑定.

var increment = (function(n) {
  return function() {
    n += 1;
    return n;
  }
}(0)); // -1 if you want the first increment to return 0

console.log(increment());
console.log(increment());
console.log(increment());
Run Code Online (Sandbox Code Playgroud)


Sno*_*rnt 14

你需要在函数之外声明n.

var n = 0;

function increment(){

  n++;
  return n;
}
Run Code Online (Sandbox Code Playgroud)

问题是范围.当您在函数内部声明变量时,它将绑定到函数的本地范围.一旦函数完成,变量就消失了.

声明脚本根级别中的变量会将其置于全局范围内.

另一种方法是在外面传递一个变量,然后通过参数将它传递给函数.

var i = 0;

function increment(n){

  n++;
  return n;
}

i=increment(i);
Run Code Online (Sandbox Code Playgroud)

有关范围和变量的更多信息,请查看此页面:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Values,_variables,_and_literals#Variable_scope

  • 我不是为了简单,我要去或提供信息:) (2认同)

thg*_*ell 8

您可以将数据绑定到函数(因为函数是对象)。

function increment(){
    increment.n = increment.n || 0;
    return ++increment.n;
}
Run Code Online (Sandbox Code Playgroud)