【问题标题】:Assigning function results to variables in JavaScript将函数结果分配给 JavaScript 中的变量
【发布时间】:2020-04-03 18:47:24
【问题描述】:

我正在学习 JavaScript,并想了解这种行为。

我正在研究以下代码:

function multiNum(x,y){
  return x*y
}
var num = multiNum(3,4);
document.write(num)

我尝试自己输入,这就是我想出的:

function multiNum(x,y){
  return x*y
}
document.write(multiNum(3,4))

我想我可以将multiNum(3,4) 放入document.write() 中,而不是创建另一个变量。

那么,我必须创建另一个变量并将新变量放入document.write(),这只是一个规则吗?

【问题讨论】:

  • 您不必强制创建变量。在大多数情况下,当变量名有意义时,它更容易阅读,并且避免了混乱的代码。在这里,您的示例很简单。但是想象一下像a(b(c(42, c('x')))) 这样的东西。这更难阅读(哪个右括号对应于左括号?),将其分解为命名良好的变量将使一切更容易维护。
  • 这最终是为了让代码更容易阅读和理解!谢谢!!
  • 另外,有时您需要多次使用函数的结果。将其保存在变量中通常比重复调用函数要好。

标签: javascript function variables


【解决方案1】:

您的两个示例都是正确的,并且会产生相同的结果。这只是风格问题。

如果您希望您的代码更易于阅读,那么最好像在第一个示例中那样将其分开。

如果您希望代码更小。那么第二个例子最好。

将事物分开是最佳做法。

【讨论】:

    【解决方案2】:

    您不必创建额外的变量,但很多时候它使代码更易于阅读和理解。他们说你的变量名通常应该描述它的内容,这样每个人,包括其他不知道代码的人,都可以对正在发生的事情有一个基本的了解。

    在您的示例中,不需要创建额外的变量,因为它是一个非常简单的代码 sn-p。无论如何,我都喜欢创造它们,只是为了保持这样做的节奏。但这是你的选择。

    【讨论】:

      【解决方案3】:

      这是一个有趣的问题,为了完全理解,查看javascript expressions 会有所帮助。基本上 javascript 中的分配看起来像

      variable_name = expression
      

      当您创建 variable 时,会评估 expression

      //so this
      number = 3 * 5
      //is the same as
      number = 15
      

      Functions 可以用表达式、文字(如string 或int)或变量名调用

      // '|' means 'or'
      function(expression | literal | variable)
      

      如果您将表达式传递给函数function(expression),则首先计算expression,然后传递给函数。

      // so
      function(3*5)
      //is the same as
      function(15)
      

      函数调用也是如此。如果一个函数在另一个函数内部被调用,它首先被计算并且它的结果是外部函数参数。

      让我们看看这个例子

      function increment(number){
       return number + 1
      }
      n = 1
      document.write(increment(n))
      

      首先使用参数increment(n) 调用document.write 和n = 1

      //so 
      increment(n) = increment(1) = 2
      //following me? now we can see that
      document.write(increment(n)) 
      //is the same as
      document.write(2)
      //!!
      
      

      希望对你有帮助!

      编辑:

      回到你的例子

      function multiNum(x,y){
        return x*y
      }
      var num = multiNum(3,4) // num = 12
      //so
      document.write(num)
      //is the same as
      document.write(12)
      
      

      【讨论】:

      • 很好地识别了基本的技术问题并在解释器看到它时遍历逻辑,而不是简单地验证它是否正确。这应该有助于未来的读者了解 JavaScript 解释器如何解析表达式。
      【解决方案4】:

      您对第二种解决方案所做的工作非常有效。

      一般来说,第一种方法只有在您希望稍后在脚本中使用multiNum(3,4) 的计算值时才有用。这就是为什么您将它存储在一个单独的变量中,这样您就不必再次计算该值。

      如果您确定不再需要它,那么您稍后以document.write(multiNum(3,4)) 所做的事情是最好的选择。

      【讨论】:

        猜你喜欢
        • 2010-10-02
        • 1970-01-01
        • 2020-10-05
        • 2013-11-12
        • 1970-01-01
        • 2022-07-02
        • 2013-01-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多