【问题标题】:Pass unknown number of parameters to JS function [duplicate]将未知数量的参数传递给JS函数[重复]
【发布时间】:2015-08-22 02:17:21
【问题描述】:

一些 javascript 库中的模式是能够将任意数量的参数传递给函数:

functiona(param1)
functiona(param1, param2, param3)
functiona(param1, param2)

我有一个长度未知的数组,我想将所有数组项作为参数传递给像functiona() 这样的函数。这可能吗?如果是这样,这样做的语法是什么?

【问题讨论】:

标签: javascript arrays function


【解决方案1】:

你想要的可能是Function.prototype.apply()。

用法:

var params = [param1, param2, param3];
functiona.apply(this, params);

正如其他人所说,functiona 声明可以使用arguments,例如:

function functiona()
{
    var param1 = this.arguments[0];
    var param2 = this.arguments[1];
}

但它也可以使用任意数量的普通参数:

function foo(x, y)
{
    console.log(x);
}
foo.apply(this, [10, 0, null]); // outputs 10

【讨论】:

  • 谢谢。正是我需要的。现在我对 .apply() 有了更多了解
【解决方案2】:

使用arguments:

arguments 对象是一个类数组对象,对应于 传递给函数的参数。

【讨论】:

    【解决方案3】:

    是的,传递给 JavaScript 函数的所有参数都可以使用函数中的 arguments 数组访问。

    function foo () {
        console.log(arguments[0]); // -> bar
        console.log(arguments[1]); // -> baz
    }
    
    foo('bar', 'baz');
    

    【讨论】:

      猜你喜欢
      • 2012-01-13
      • 2011-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-21
      • 2012-08-20
      • 1970-01-01
      相关资源
      最近更新 更多