繁体   English   中英

了解return语句。

[英]Understanding the return statement.

我看了很多例子,但仍然无法弄清楚return语句是如何工作的。

 function One() {
   var newVal = 0;
   Too();
   console.log(newVal);
 }

 function Too(newVal) {
   ++newVal; 
   return(newVal);
 }

此打印不应该在控制台上打印1吗? 我真正想做的是让函数TooVal每次调用都增加1。 但是我什至无法弄清楚如何使return语句起作用。 我应该提到我不想使用全局变量。 谢谢你的帮助。

此打印不应该在控制台上打印1吗?

号的newVal里面Too不是newVal里面One 他们是完全分开的。

我真正想做的是让函数TooVal每次调用都增加1。

不能,JavaScript没有像其他语言一样通过引用传递变量的任何机制(例如C#的refout参数)。 最接近的方法是传递对对象的引用并修改对象的状态(这实际上是完全不同的,在这里我不会赘述,因为它会使事情变得混乱:-))。

这些都与return语句无关。

做您所描述的最简单的方法是:

function One() {
    var newVal = 0;
    newVal = Too(newVal);
    console.log(newVal);
}

function Too(arg) {
    ++arg; 
    return arg;
}

当我们调用One时,会发生以下情况:

  1. 创建一个名为newVal的局部变量。
  2. 其值设置为0
  3. 的副本作为参数传递到函数Too中。 没有链接返回到newVal变量。
  4. 也会调用Too并在其arg参数中接受该值(JavaScript中的参数实际上是局部变量)。
  5. arg的值也增​​加Too
  6. Too返回arg保留的值的副本作为其返回值
  7. Too的返回值分配给变量newVal
  8. 我们输出该值(通过将其传递到console.log )。

不,不应该。 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

如果函数返回一个值,则需要在console.log调用该函数或捕获返回的值。

function One() {
   var newVal = 0;

   console.log(Too(newVal));
 }

 function Too(newVal) {
   ++newVal; 
   return(newVal);
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM