每次运行函数时增加值

新手上路,请多包涵

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

 function increment(){
  var n = 0;
  n++;
  return n;
}

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

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

原文由 Gopal1216 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 577
2 个回答

您需要在函数外声明 n 。

 var n = 0;

function increment(){

  n++;
  return n;
}

问题是范围。当你在函数内部声明一个变量时,它被绑定到函数的局部范围。一旦函数完成,变量就消失了。

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

另一种方法是在你传递的外部有一个变量,然后通过参数将它传递给函数。

 var i = 0;

function increment(n){

  n++;
  return n;
}

i=increment(i);

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

原文由 Snowburnt 发布,翻译遵循 CC BY-SA 3.0 许可协议

创建一个 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());

原文由 Xotic750 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏