JavaScript permite esto, puede pasar cualquier número arbitrario de argumentos a una función.
Son accesibles en el objeto arguments
que es un objeto de matriz similar que tiene propiedades numéricas que contienen los valores de los argumentos que se utilizaron cuando se invoca la función, una propiedad length
que le indica cuántos argumentos se han utilizado en la invocación también, y una propiedad callee
que es una referencia a la función en sí, por ejemplo, usted podría escribir:
function sum(/*arg1, arg2, ... , argN */) { // no arguments defined
var i, result = 0;
for (i = 0; i < arguments.length; i++) {
result += arguments[i];
}
return result;
}
sum(1, 2, 3, 4); // 10
el objeto arguments
puede ver como una matriz, pero es un objeto liso, que hereda de Object.prototype
, pero si desea utilizar métodos de Array en él, puede invocarlos directamente desde el Array.prototype
, por ejemplo, un patrón común para obtener un verdadera gama es utilizar el método de matriz slice
:
function test() {
var args = Array.prototype.slice.call(arguments);
return args.join(" ");
}
test("hello", "world"); // "hello world"
Además, se puede saber cuántos argumentos una función espera, utilizando la propiedad length
de la función de objeto:
function test (one, two, three) {
// ...
}
test.length; // 3
puede llamar 'test.lengt h' dentro de la función para probar cuántos argumentos ingresa el usuario? –
o podría usar '[] .slice.call (argumentos);' – Mahi