javascript - datos - Obtener la aridad de una función.
aridad base de datos (5)
Como se cubre en otras respuestas, la propiedad length
te lo dice. Entonces zero.length
será 0, one.length
será 1, y two.length
será 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 después en una verdadera matriz (a diferencia de los
arguments
pseudo-matriz) - Los parámetros de función pueden tener valores por defecto.
El parámetro "resto" no se cuenta al determinar la aridad de la función:
function stillOne(a, ...rest) { }
console.log(stillOne.length); // 1
De manera similar, un parámetro con un argumento predeterminado no se agrega a la aridad y, de hecho, evita que otros que lo sigan agreguen, incluso si no tienen valores predeterminados explícitos (se supone que tienen un valor predeterminado silencioso de undefined
) :
function oneAgain(a, b = 42) { }
console.log(oneAgain.length); // 1
function oneYetAgain(a, b = 42, c) { }
console.log(oneYetAgain.length); // 1
En Javascript, ¿cómo se puede determinar el número de parámetros formales definidos para una función?
Tenga en cuenta que este no es el parámetro de arguments
cuando se llama a la función, sino la cantidad de argumentos 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
}
La aridad de una función se almacena en su propiedad .length
.
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
La propiedad de 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.
Una función arity es el número de parámetros que contiene la función. Puede alcanzarse llamando a la propiedad length.
Ejemplo:
function add(num1,num2){}
console.log(add.length); // --> 2
function add(num1,num2,num3){}
console.log(add.length); // --> 3
Nota: el número de parámetros pasados en una llamada de función no afecta la aridad de la función.
> zero.length
0
> one.length
1
> two.length
2
Una función puede determinar su propia aridad (longitud) de esta manera:
// 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
}