Debido a los errores de diseño del idioma, los argumentos pueden tratarse como una matriz.
La copia del código es la siguiente:
función cero () {
console.log (argumentos [0]);
}
Habrá
La copia del código es la siguiente:
función cero () {
para (var i = 0; i <arguments.length; i ++) {
console.log (argumentos [i]);
}
}
Aprovecha el hecho de que JavaScript es que Javasc
La variable de argumentos aquí proporciona una interfaz de matriz para los argumentos reales. Debido a los parámetros variables de los argumentos aquí, podemos usar esta cosa interesante para hacer algunas cosas interesantes, como la sobrecarga.
Javscript recargar
Hay una pregunta sobre la sobrecarga en Stackvoerflow, por lo que la primera respuesta es
La copia del código es la siguiente:
if (typeof amigo === "undefinado") {
} demás {
}
Otra respuesta es
La copia del código es la siguiente:
switch (argumentos.length) {
Caso 0:
// probablemente error
romper;
Caso 1:
// Haz algo
romper;
Caso 2:
predeterminado: // cae para manejar el caso de más parámetros
// Haz algo más
romper;
}
Pero este método realmente no es guapo. ¿Nuestra función eventualmente se convertirá en esta?
La copia del código es la siguiente:
función cero1 () {
console.log ('Argumentos 1')
};
función cero2 () {
console.log ('Argumentos 2')
};
función cero () {
if (arguments.length == 1) {
cero1 ();
} demás{
cero2 ();
}
}
Realmente no es guapo en absoluto. Incluso si cambiamos el interruptor ... Caso, no se verá bien.
Los argumentos de JavaScript no son una matriz
Los argumentos no siempre son una matriz como vemos, y a veces puede que no.
La copia del código es la siguiente:
función hello () {
console.log (typeof argumentos);
}
Aquí el tipo de argumentos es un objeto, aunque el tipo de matriz también es un objeto, aunque podemos convertirlo en una matriz
La copia del código es la siguiente:
var args = array.prototype.slice.call (argumentos);
Pero esto también muestra que esto no es una matriz, solo tiene la única propiedad de la matriz, es decir, la longitud. Además de esto
argumentos.callee
Referencia a la función de ejecución actualmente.
argumentos.caller
Referencia a la función que invocó la función de ejecución actualmente.
argumentos. Longitud
Referencia al número de argumentos pasados a la función.