Objeto arguments ECMAScript

objeto arguments

No código da função, os desenvolvedores usam o objeto especial argumentsNão é necessário especificar explicitamente o nome do parâmetropode acessá-las.

Por exemplo, no função sayHi(), o primeiro parâmetro é message. Você também pode acessar esse valor usando arguments[0], que é o valor do primeiro parâmetro (o primeiro parâmetro está na posição 0, o segundo parâmetro está na posição 1, e assim por diante).

Portanto, não é necessário nomear explicitamente os parâmetros para rewritten a função:

function sayHi() {
  if (arguments[0] == "bye") {
    return;
  }
  alert(arguments[0]);
}

Detecção do número de parâmetros

Também pode usar o objeto arguments para detectar o número de parâmetros de uma função, referindo-se à propriedade arguments.length.

O código a seguir exibirá o número de parâmetros usados em cada chamada da função:

function howManyArgs() {
  alert(arguments.length);
}
howManyArgs("string", 45);
howManyArgs();
howManyArgs(12);

O código acima exibirá "2", "0" e "1" em sequência.

Comentário:Diferente de outros linguagens de programação, o ECMAScript não verifica se o número de parâmetros passados para a função é igual ao número de parâmetros definidos na função. Qualquer função definida pelo desenvolvedor pode aceitar qualquer número de parâmetros (de acordo com a documentação da Netscape, até 255), sem causar qualquer erro. Qualquer parâmetro omitido será passado para a função como undefined, e os parâmetros extras serão ignorados.

Simulação de sobrecarga de função

Use o objeto arguments para determinar o número de parâmetros passados para a função, o que permite simular sobrecarga de função:

function doAdd() {
  if (arguments.length == 1) {
    alert(arguments[0] + 5);
  } else if (arguments.length == 2) {
    alert(arguments[0] + arguments[1]);
  }
}
doAdd(10); // Output "15"
doAdd(40, 20); // Output "60"

Quando há apenas um parâmetro, a função doAdd() adiciona 5 ao parâmetro. Se houver dois parâmetros, eles serão somados e o resultado será retornado. Portanto, doAdd(10) retorna "15", enquanto doAdd(40, 20) retorna "60".

Embora não seja tão bom quanto sobrecarga, já é suficiente para evitar essa restrição do ECMAScript.