是否有一种方法允许“无限”变量的函数在JavaScript?
例子:
load(var1, var2, var3, var4, var5, etc...)
load(var1)
是否有一种方法允许“无限”变量的函数在JavaScript?
例子:
load(var1, var2, var3, var4, var5, etc...)
load(var1)
当前回答
另一种选择是在上下文对象中传入参数。
function load(context)
{
// do whatever with context.name, context.address, etc
}
像这样使用它
load({name:'Ken',address:'secret',unused:true})
这样做的好处是,您可以添加任意多的命名参数,并且函数可以根据需要使用(或不使用)它们。
其他回答
如前所述,可以使用arguments对象检索数量可变的函数形参。
如果想调用具有相同参数的另一个函数,请使用apply。您甚至可以通过将参数转换为数组来添加或删除参数。例如,这个函数在登录到控制台之前插入一些文本:
log() {
let args = Array.prototype.slice.call(arguments);
args = ['MyObjectName', this.id_].concat(args);
console.log.apply(console, args);
}
当然,只要使用arguments对象。
function foo() {
for (var i = 0; i < arguments.length; i++) {
console.log(arguments[i]);
}
}
Ramast指出,最好使用rest参数语法。
function (a, b, ...args) {}
我只是想添加一些很好的属性。args参数
它是一个数组,而不是像参数那样的对象。这允许您直接应用map或sort等函数。 它不包括所有参数,而只包括从它传递的一个参数。例如,函数(a, b,…args)在这种情况下args包含 参数3到arguments.length
在函数中使用arguments对象可以访问传入的所有参数。
是的,就像这样:
function load()
{
var var0 = arguments[0];
var var1 = arguments[1];
}
load(1,2);