所以我需要一个函数来增加变量的值,比如说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
您可以将数据绑定到函数(因为函数是对象)。
function increment(){
increment.n = increment.n || 0;
return ++increment.n;
}
Run Code Online (Sandbox Code Playgroud)