Devido a erros de design de idiomas, os argumentos podem ser tratados como uma matriz.
A cópia do código é a seguinte:
função zero () {
console.log (argumentos [0]);
}
Haverá
A cópia do código é a seguinte:
função zero () {
for (var i = 0; i <argumentos.length; i ++) {
console.log (argumentos [i]);
}
}
Aproveite o fato de que JavaScript é que Javasc
A variável de argumentos aqui fornece uma interface semelhante a uma matriz para os argumentos reais. Devido aos parâmetros variáveis dos argumentos aqui, podemos usar essa coisa interessante para fazer algumas coisas interessantes, como sobrecarga.
Recarregar Javscript
Há uma pergunta sobre a sobrecarga no StackvoerFlow, então a primeira resposta é
A cópia do código é a seguinte:
if (typeof amigo === "indefinido") {
} outro {
}
Outra resposta é
A cópia do código é a seguinte:
switch (argumentos.length) {
Caso 0:
// provavelmente erro
quebrar;
Caso 1:
// Faça algo
quebrar;
Caso 2:
padrão: // cair para lidar com o caso de mais parâmetros
// Faça outra coisa
quebrar;
}
Mas esse método não é realmente bonito. Nossa função acabará se tornando assim?
A cópia do código é a seguinte:
função zero1 () {
console.log ('Argumentos 1')
};
função zero2 () {
console.log ('Argumentos 2')
};
função zero () {
if (argumentos.Length == 1) {
zero1 ();
} outro{
zero2 ();
}
}
Realmente não é bonito. Mesmo se mudarmos o interruptor ... caso, não ficará bem.
Argumentos de JavaScript não são uma matriz
Os argumentos nem sempre são uma matriz como vemos, e às vezes pode não.
A cópia do código é a seguinte:
função hello () {
console.log (tipoof argumentos);
}
Aqui, o tipo de argumento é um objeto, embora o tipo de matriz também seja um objeto, embora possamos convertê -lo em uma matriz
A cópia do código é a seguinte:
var args = array.prototype.slice.call (argumentos);
Mas isso também mostra que isso não é uma matriz, ele possui apenas a única propriedade da matriz, ou seja, comprimento. Além disso
argumentos.Callee
Referência à função atualmente em execução.
argumentos.caller
Referência à função que invocou a função atualmente em execução.
argumentos.Length
Referência ao número de argumentos passados para a função.