La copia del código es la siguiente:
<script language = "javaScript">
// El primer valor de parámetro.
prueba de función (a, b, c, d) {
alerta (argumentos [0]);
}
// argumentos [0] es en realidad a. Del mismo modo, los argumentos [1] son b, c, d a su vez
</script>
La copia del código es la siguiente:
<script language = "javaScript">
{
función function_name (exp1, exp2, exp3, exp4)
{
var umber = "";
umber = argumentos.length;
alerta (umber);
}
function_name ('a', 'b', 'c', 'd'); Se pueden llamar a todos
// function_name ("a", "b", "c", "d"); se puede llamar
}
</script>
1. En JavaScript, el objeto Argumentos es un objeto relativamente especial, que en realidad es una propiedad incorporada de la función actual. Los argumentos son muy similares a la matriz, pero en realidad no son una instancia de matriz. Se puede verificar por el siguiente código (por supuesto, de hecho, en la función Funcarg, no es necesario escribir argumentos como Funcarg.argumentos, solo escribir argumentos).
La copia del código es la siguiente:
Array.prototype.testarg = "test";
función funcarg () {
alerta (Funcarg.arguments.testarg);
alerta (Funcarg.arguments [0]);
}
alerta (nueva matriz (). testArg); // resultado: "prueba"
Funcarg (10); // resultado: "indefinido" "10"
2. La longitud del objeto de argumentos está determinada por el número de parámetros reales en lugar del número de parámetros formales. Los parámetros formales son variables que reabren el almacenamiento del espacio de memoria dentro de la función, pero no se superponen con el espacio de memoria del objeto Argumentos. Cuando existen tanto argumentos como valores, los valores se sincronizan, pero para uno de ellos, los valores no están sincronizados para esta situación sin valor. Se puede verificar el siguiente código.
La copia del código es la siguiente:
función f (a, b, c) {
alerta (argumentos.length); // resultado: "2"
a = 100;
alerta (argumentos [0]); // resultado: "100"
argumentos [0] = "qqyumidi";
alerta (a); // resultado: "Qqyumidi"
alerta (c); // resultado: "indefinido"
c = 2012;
alerta (argumentos [2]); // resultado: "indefinido"
}
f (1, 2);
3. De la declaración y las características de llamadas de las funciones en JavaScript, se puede ver que las funciones en JavaScript no se pueden sobrecargar.
Basado en la base de la sobrecarga en otros idiomas: "El valor de retorno de la función es diferente o el número de parámetros formales es diferente", podemos sacar la conclusión anterior:
Primero: no existe tal declaración de que la Declaración de funciones de JavaScript devuelva un tipo de valor;
Segundo: El número de parámetros formales en JavaScript es estrictamente solo para facilitar la operación variable en las funciones. De hecho, los parámetros reales se han almacenado en el objeto de argumentos.
Además, una comprensión profunda de por qué las funciones no se pueden sobrecargar en JavaScript de la función JavaScript en sí: en JavaScript, las funciones son en realidad objetos, y el nombre de la función es una referencia a la función, o el nombre de la función en sí es una variable. Para la declaración de función y la expresión de la función que se muestra a continuación, lo anterior es en realidad lo mismo (sin considerar la diferencia entre la declaración de función y la expresión de la función), es muy útil para nosotros comprender la característica de que las funciones no pueden sobrecargarse en JavaScript.
La copia del código es la siguiente:
función f (a) {
devolver A + 10;
}
función f (a) {
devolver a - 10;
}
// Sin considerar la diferencia entre la declaración de función y la expresión de la función, es equivalente a lo siguiente
var f = función (a) {
devolver A + 10;
}
var f = función (a) {
devolver a - 10;
}
4. Hay una propiedad muy útil en el objeto de argumentos: Callee. argumentos.callee Devuelve la referencia de la función actual donde reside este objeto de argumento. Al usar llamadas recursivas a la función, use argumentos.callee en lugar del nombre de la función en sí.
como sigue:
La copia del código es la siguiente:
recuento de funciones (a) {
if (a == 1) {
regresar 1;
}
devolver a + argumentos.callee (-a);
}
var mm = count (10);
alerta (mm);