【问题标题】:Basic understanding of return function [duplicate]返回函数的基本理解[重复]
【发布时间】:2017-06-28 06:25:24
【问题描述】:

我无法理解在函数(JS 等)中返回值的基本概念。

我为什么要使用

function add(x,y){
  result=x+y;
  return result;
}
add(5,3);

而不是

var result=0;
function add(x,y){
  result=x+y;
}
add(5,3);

我猜是为了节省内存,不是吗?

【问题讨论】:

  • 节省内存?不是真的,你的两个函数都需要一个全局的result var ...我更像function add(x, y) { return x + y; }的标准写作方式,使用var result = add(2,3)
  • 为了清楚起见,您的第一个示例不会按原样工作。当一个函数返回一些东西时,像这样调用它是没有意义的。

标签: javascript function return


【解决方案1】:

基本上,当您使用'return'关键字时,该功能将假定您返回的值。 Insted,当您使用正常操作时,您只是进行操作,但值(x + y)不会保存在任何地方。

希望你理解:)

【讨论】:

    【解决方案2】:

    这与内存无关,而与您希望代码如何工作有关。

    一个函数主要是为了简化重复的任务(虽然它只能使用一次)。

    让我们开始你的第一个函数:

    function add(x,y){
      result=x+y;
      return result;
    }
    var eight = add(5,3);
    var nine = add(5,4);
    

    我们将如何使用第二个函数来实现这一点?

    var result=0;
    function add(x,y){
      result=x+y;
    }
    add(5,3);
    var eight = result;
    add(5,4);
    var nine = result;
    

    这似乎是做同样事情的一种循环方式,而不是简单地返回它。虽然您可以将其分配给全局变量,但对于返回 1 个事物的简单函数,您应该简单地使用 return。只有在影响其他功能或应用程序状态时,您才可能希望设置外部变量。

    var locale = 'en';
    var currency = '$';
    
    function setConfig(locale, currency) {
        //Here we could use the currency string in other functions, so setting state would be nice here.
        locale = 'en';
        currency = '$';
    }
    
    function displayCurrency(num) {
        console.log(currency + num);
    }
    

    【讨论】:

      【解决方案3】:

      在决定是否应该使用这两个功能之一时,我认为内存不是问题。

      这两个函数之间的主要内容是,作为开发人员,拥有或使用全局变量不是一个好习惯,在这种情况下是 var result = 0; 在一个范围内使用变量也是一个好习惯,而 Javascript 在词法上是范围没有引入 ES6 (ECMAScript2015) letconst 关键字。一般来说,函数应该返回值,而不是引入可能产生意外行为的副作用(尽管在这个基本函数中很难看到),在这种情况下,它将操纵全局 var result = 0

      如果有任何不清楚的地方,请随时与 cmets 展开讨论 :)

      【讨论】:

        【解决方案4】:

        因为第一个是Reusable的。它对连接其他功能很有用

        function add(x,y){
          result=x+y;
          return result;
        }
        console.log(add(5,3));
        console.log(add(5,3)+add(8,3));// easy to connect other model

        第二个

        1. 您将结果分配到变量中。不可重用。
        2. 如果你在函数调用后给变量赋值,结果会受到影响
          var result=0;
          function add(x,y){
            result=x+y;
          }
          add(5,3);
          result="affected";
          console.log(result)

        【讨论】:

          【解决方案5】:

          首先,Javascript 中的函数和变量与作用域相关联。在您的第二个示例中,您的变量 result 链接到文档范围。这是可行的,但请考虑以下代码:

          function add(x,y){
            result = x+y;
          }
          function alertAdd(x,y){
            var result = add(x,y);
            alert(result);
          }
          alertAdd(5,3);
          

          如果您运行此程序,您将收到一个值为“未定义”的警报,因为变量 result 是在 alertAdd 的范围内定义的。这意味着主要范围不知道它,并且您的 add() 函数中的 result 甚至没有首先定义。在其他语言中,这会产生错误。

          现在考虑一下:

          function add(x,y){
            return x+y;
          }
          function alertAdd(x,y){
            var result = add(x,y);
            alert(result);
          }
          alertAdd(5,3);
          

          这是有效的,因为如果add()result 未在同一范围内声明,我们要求add() 返回其值,而不是将其分配给预先存在的变量。此外,您可以在任何变量上重用 add()。不仅仅是result

          var result_b = add(1+2); // result_b = 3
          var result_c = add(2+2); // result_c = 4
          function logAdd(a,b) {
            var value = add(a,b);
            console.log(value);
          }
          logAdd(3,3); // 6
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2019-12-29
            • 2019-09-09
            • 2020-05-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多