【问题标题】:Use a variable in function argument在函数参数中使用变量
【发布时间】:2014-05-18 10:43:23
【问题描述】:

我要做的是将函数中指定的变量设置为某些东西,如果这没有意义,请参见下文。

function getRandomFromArray(arrayName,storeVariable)
{
storeVariable = arrayName[Math.floor(Math.random() * arrayName.length)]
}

var petTypeArray = ['Cat','Dog','Ferret','Spider','Companion Bot'];

getRandomFromArray(petTypeArray,petType)

例如,将 petType 设置为 petTypeArray 中的随机字符串。我做对了吗?我可以这样做吗?

【问题讨论】:

  • 为什么不直接使用常规返回值和变量赋值?

标签: javascript function variables arguments


【解决方案1】:

在 JavaScript 中,所有参数都是按值传递的。

这意味着storeVariable 会收到您调用时使用的值的副本。该本地副本可以更改,但不会影响原始副本。

(是的,所有参数都是按值传递的。对于那些要反对我的人,对象是按值传递的。那个值恰好是对原始对象的引用。)

【讨论】:

    【解决方案2】:

    没有。你做的不正确。原因是,变量只是对数据的引用。它们本身没有任何意义。所以,当你说

    storeVariable = Math.floor(Math.random() * arrayName.length)
    

    您正在使storeVariable 引用一个新值。而已。您没有对storeVariable 进行更改。这就是为什么它不起作用。相反,您可以像这样从函数返回值

    function getRandomFromArray(arrayName)
    {
        return arrayName[Math.floor(Math.random() * arrayName.length)];
    }
    

    并让一些其他变量引用返回的数据,像这样

    var randomData = getRandomFromArray(myArray);
    

    【讨论】:

      【解决方案3】:

      你可以使用函数的返回值:

      function getRandomFromArray(arrayName) {
          return Math.floor(Math.random() * arrayName.length);
      }
      
      var petTypeArray = ['Cat', 'Dog', 'Ferret', 'Spider', 'Companion Bot'];
      var randomElement = getRandomFromArray(petTypeArray);
      

      这使代码更具可读性。可以在函数内部修改参数值,但不适用于字符串和整数等原始类型。您只能修改某些复杂对象的属性。

      【讨论】:

      • 非常感谢。真的应该想到这一点。
      猜你喜欢
      • 2016-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-26
      • 2014-02-03
      • 2021-05-27
      • 1970-01-01
      • 2019-09-16
      相关资源
      最近更新 更多