【问题标题】:When to use return, and what happens to returned data?何时使用 return,返回的数据会发生什么?
【发布时间】:2011-11-03 11:11:29
【问题描述】:

有什么区别:

function bla1(x){console.log(x)}

function bla(x){return console.log(x)}

在哪些情况下我应该使用return

另外,当一个函数返回一个值时,它会发生什么?它存储在某个地方吗?

【问题讨论】:

  • 一般来说,如果你从一个函数中返回一个值,你需要将它分配给调用者中一个兼容的对象/变量。

标签: javascript return


【解决方案1】:

有什么区别

第一个函数返回undefined(因为它没有明确地return),第二个函数返回console.log返回的任何东西。

什么情况下应该使用return?

当函数正在生成某个值并且您想将其传递回调用者时。以Math.pow 为例。它接受两个参数,基数和指数,并将基数返回到指数。

当一个值从一个函数返回时,它会发生什么?它存储在某个地方吗?

如果要存储返回值,则必须将其分配给变量

var value = someFunction();

这会将someFunction 的返回值存储在value 中。如果您在没有分配返回值的情况下调用该函数,则该值将被静默删除:

someFunction();

这些是编程基础知识,不仅与 JavaScript 相关。你应该找到一本介绍这些基础知识的书,特别是关于 JavaScript 的书,我建议阅读 MDN JavaScript Guide。也许关于Functions 的维基百科文章也有帮助。

【讨论】:

  • 感谢您的回答。漂亮的回答,直截了当。它让我终于明白了返回值的使用以及返回值会发生什么。我一直想知道返回值发生了什么。
【解决方案2】:

函数中的返回是从函数传回数据的一种方式。

示例:

function test(){
   var test = 1+1;
   return test;
}

var feedback = test(); //feedback would now contain the value 2 if outputted.

我们还可以将变量发送到函数中,然后将其返回。

示例 2:

 function test(i){
    i= i+1;
    return i;
 }

 var feedback = test(1); //feedback would also output the value 2.

【讨论】:

    【解决方案3】:

    正如您已经提到的,return 使您可以调用函数并保存其返回值。

    这是一个小例子:

    function bla(x) { return "blablabla"; }
    

    如果我调用该方法,我将得到一个带有 blablabla 的字符串:

    var blastring = bla(x);
    alert(blastring);
    

    这将导致带有 blablabla 的警报。

    【讨论】:

      【解决方案4】:

      使用return,您可以指定function 的值。您可以使用此值进行进一步的操作或将其存储到变量中等等。

      由于console.log returns undefined,您问题中的示例是等效的,因为function 未达到返回语句也会返回undefined。但是让我举个例子:

      function sum(arr) {
          var s = 0;
          for (var index in arr) {
              s += arr[index];
          }
          return s;
      }
      
      function prodsum(arr, scalar) {
          return scalar * sum(arr);
      }
      
      console.log(prodsum([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 3));
      

      结果将是 165。如果我们删除 returns,那么两个 functions 都将是 return undefined

      function sum(arr) {
          var s = 0;
          for (var index in arr) {
              s += arr[index];
          }
          s;
      }
      
      function prodsum(arr, scalar) {
          scalar * sum(arr);
      }
      
      console.log(prodsum([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 3));
      

      结果也是undefined。基本上,如果你想让function 有一个结论或最终值,那么你就有一个return

      【讨论】:

        【解决方案5】:

        如果你只是在函数中添加return;。它停止函数的执行。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-07-10
          • 2017-03-08
          • 2014-11-26
          • 2017-05-29
          • 1970-01-01
          相关资源
          最近更新 更多