是否有一种方法允许“无限”变量的函数在JavaScript?
例子:
load(var1, var2, var3, var4, var5, etc...)
load(var1)
是否有一种方法允许“无限”变量的函数在JavaScript?
例子:
load(var1, var2, var3, var4, var5, etc...)
load(var1)
当前回答
在(大多数)最新的浏览器中,您可以使用以下语法接受可变数量的参数:
function my_log(...args) {
// args is an Array
console.log(args);
// You can pass this array as parameters to another function
console.log(...args);
}
这里有一个小例子:
function foo(x, ...args) {
console.log(x, args, ...args, arguments);
}
foo('a', 'b', 'c', z='d')
=>
a
Array(3) [ "b", "c", "d" ]
b c d
Arguments
0: "a"
1: "b"
2: "c"
3: "d"
length: 4
文档和更多示例请访问:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters
其他回答
是的,就像这样:
function load()
{
var var0 = arguments[0];
var var1 = arguments[1];
}
load(1,2);
在函数中使用arguments对象可以访问传入的所有参数。
Ramast指出,最好使用rest参数语法。
function (a, b, ...args) {}
我只是想添加一些很好的属性。args参数
它是一个数组,而不是像参数那样的对象。这允许您直接应用map或sort等函数。 它不包括所有参数,而只包括从它传递的一个参数。例如,函数(a, b,…args)在这种情况下args包含 参数3到arguments.length
使用数组,然后你可以使用你需要的参数。例如,计算数组中元素个数的平均值:
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]);
}
}