我看了很多例子,但仍然无法弄清楚return语句是如何工作的。
function One() {
var newVal = 0;
Too();
console.log(newVal);
}
function Too(newVal) {
++newVal;
return(newVal);
}
此打印不应该在控制台上打印1吗?我真正想做的是使函数TooVal每次调用都增加1。但是我什至无法弄清楚如何使return语句起作用。我应该提到我不想使用全局变量。谢谢你的帮助。
最佳答案
不,不应该。 return
语句确定当控制返回到调用环境时,函数调用的值在调用环境中将是什么。由于您的调用环境不使用返回值,因此没有净效果。
这是您获取价值的方法:
newVal = Too(newVal);
如果要创建一个用作计数器的函数,这样每次调用它时都会得到一个新的数字,您可以执行以下操作:
var counter = function(initial) {
var c = initial || 0;
return function() {
return c++;
};
}(0);
这样做是使用匿名函数为另一个函数设置一个持久环境,该环境在(立即)被调用时从外部函数返回。然后可以调用返回的函数,以从其专用计数器(变量“ c”)返回新值:
var currentCount = counter();
alert(currentCount); // 0, the first time
currentCount = counter();
alert(currentCount); // 1, and so on