是否有一种方法允许“无限”变量的函数在JavaScript?
例子:
load(var1, var2, var3, var4, var5, etc...)
load(var1)
是否有一种方法允许“无限”变量的函数在JavaScript?
例子:
load(var1, var2, var3, var4, var5, etc...)
load(var1)
当前回答
如前所述,可以使用arguments对象检索数量可变的函数形参。
如果想调用具有相同参数的另一个函数,请使用apply。您甚至可以通过将参数转换为数组来添加或删除参数。例如,这个函数在登录到控制台之前插入一些文本:
log() {
let args = Array.prototype.slice.call(arguments);
args = ['MyObjectName', this.id_].concat(args);
console.log.apply(console, args);
}
其他回答
是的,就像这样:
function load()
{
var var0 = arguments[0];
var var1 = arguments[1];
}
load(1,2);
如前所述,可以使用arguments对象检索数量可变的函数形参。
如果想调用具有相同参数的另一个函数,请使用apply。您甚至可以通过将参数转换为数组来添加或删除参数。例如,这个函数在登录到控制台之前插入一些文本:
log() {
let args = Array.prototype.slice.call(arguments);
args = ['MyObjectName', this.id_].concat(args);
console.log.apply(console, args);
}
使用数组,然后你可以使用你需要的参数。例如,计算数组中元素个数的平均值:
function fncAverage(sample) {
var lenghtSample = sample.length;
var elementsSum = 0;
for (var i = 0; i < lenghtSample; i++) {
elementsSum = Number(elementsSum) + Number(sample[i]);
}
average = elementsSum / lenghtSample
return (average);
}
console.log(fncAverage([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])); // results 5.5
let mySample = [10, 20, 30, 40];
console.log(fncAverage(mySample)); // results 25
//try your own arrays of numbers
当然,只要使用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