我看了很多例子,但仍然无法弄清楚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

10-02 11:55