Pregunta

En Javascript, ¿cómo se puede determinar la cantidad de parámetros formales definidos para una función?

Tenga en cuenta que este no es el arguments parámetro cuando se llama a la función, pero el número de argumentos con nombre con los que se definió la función.

function zero() {
    // Should return 0
}

function one(x) {
    // Should return 1
}

function two(x, y) {
    // Should return 2
}
¿Fue útil?

Solución

> zero.length
0
> one.length
1
> two.length
2

Fuente

Una función puede determinar su propia aridad (longitud) como esta:

// For IE, and ES5 strict mode (named function)
function foo(x, y, z) {
    return foo.length; // Will return 3
}

// Otherwise
function bar(x, y) {
    return arguments.callee.length; // Will return 2
}

Otros consejos

La aridad de una función se almacena en su .length propiedad.

function zero() {
    return arguments.callee.length;
}

function one(x) {
    return arguments.callee.length;
}

function two(x, y) {
    return arguments.callee.length;
}

> console.log("zero="+zero() + " one="+one() + " two="+two())
zero=0 one=1 two=2

Como está cubierto en otras respuestas, el length La propiedad te dice eso. Asi que zero.length será 0, one.length será 1 y two.length serán 2.

A partir de ES2015, tenemos dos arrugas:

  • Las funciones pueden tener un parámetro de "descanso" al final de la lista de parámetros que reúne cualquier argumento dado en esa posición o luego en una matriz verdadera (a diferencia de la arguments pseudo-matriz)
  • Los parámetros de la función pueden tener valores predeterminados

El parámetro "REST" no se cuenta al determinar la aridad de la función:

function stillOne(a, ...rest) { }
console.log(stillOne.length); // 1

Del mismo modo, un parámetro con un argumento predeterminado no se suma a la aridad y, de hecho, evita que cualquier otro que lo siga, incluso si no tienen valores predeterminados explícitos (se supone que tienen un incumplimiento silencioso de incumplimiento silencioso de undefined):

function oneAgain(a, b = 42) { }
console.log(oneAgain.length);    // 1

function oneYetAgain(a, b = 42, c) { }
console.log(oneYetAgain.length); // 1

La aridad de una función es el número de parámetros que contiene la función. Se puede lograr llamando a la propiedad de longitud.

Ejemplo:

function add(num1,num2){}
console.log(add.length); // --> 2

function add(num1,num2,num3){}
console.log(add.length); // --> 3

Nota:la cantidad de parámetros pasados ​​en una llamada de función no afecta la aridad de la función.

La propiedad de la aridad utilizada para devolver el número de argumentos esperados por la función, sin embargo, ya no existe y ha sido reemplazada por la propiedad Function.Prototype.length.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top