了解返回语句

Understanding the return statement.

本文关键字:语句 返回 了解      更新时间:2023-09-26

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

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

这不应该将 1 打印到控制台吗?我真正想做的是让函数 太 每次调用 newVal 时增加 1。但我什至不知道如何让 return 语句工作。我应该提到我不想使用全局变量。感谢您的任何帮助。

这不应该将 1 打印到控制台吗?

不。Too内部的newVal不是One内部的newVal。它们是完全分开的。

我真正想做的是让函数 太 每次调用 newVal 时增加 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. Tooarg 为单位递增该值。
  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);
 }