Esta página foi traduzida do inglês pela comunidade.Saiba mais e junte-se à comunidade MDN Web Docs.
Arguments object
Baseline Widely available *
This feature is well established and works across many devices and browser versions. It’s been available across browsers since julho de 2015.
* Some parts of this feature may have varying levels of support.
O objetoarguments é como um objeto Array correspondendo aos argumentos passados para uma função.
In this article
Sintaxe
arguments
Descrição
O objetoarguments é uma variável local disponível dentro de todas as funções. Você pode referenciar os argumentos de uma função dentro da função usando o objetoarguments. Esse objeto contém um registro para cada argumento fornecido para a função, com o índice do primeiro registro começando em 0. Por exemplo, se são passados três argumentos para uma função, você pode referenciá-los como a seguir:
arguments[0];arguments[1];arguments[2];Os argumentos também podem ser definidos:
arguments[1] = "novo valor";O objetoargumentos não é umArray. É similar a um Array, mas não possui as propriedades deArray, excetolength. Por exemplo, ele não possui o métodopop. Entretanto, ele pode ser convertido em umArray real:
var args = Array.prototype.slice.call(arguments);var args = [].slice.call(arguments);// ES2015var args = Array.from(arguments);Aviso:Usar slice nos argumentos impedem otimizações em alguns motores JavaScript (V8 por exemplo -mais informações). Se você precisar, tente construir um novo array iterando através dos argumentos do objeto. Uma alternativa seria usar o construtor doArray como uma função:
var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments);Você pode usar o objetoarguments se você chamar uma função com mais argumentos do que ele é formalmente declarado para aceitar. Esta técnica é útil para funções que podem ser passada em um número de variáveis de argumentos. Você pode usararguments.length para determinar o número de argumentos passado para a função, e então processar cada argumento usando o objetoarguments. Para determinar o número de parâmetros declarados naassinatura da função, use a propriedadeFunction.length.
Usando typeof com Arguments
O comandotypeof arguments retorna 'object'.
console.log(typeof arguments); // 'object'Otypeof de argumentos individuais pode ser determinado com o uso do índice.
console.log(typeof arguments[0]); //this will return the typeof individual arguments.Usando a Sintaxe Spread com Arguments
Você também pode usar o métodoArray.from() ou ooperador spread para converter argumentos em um Array real:
var args = Array.from(arguments);var args = [...arguments];Propriedades
arguments.calleeReferência para a função atualmente em execução.
arguments.callerReferência para a função que invocou a função atualmente em execução.
arguments.lengthReferência para o número de argumentos passados para a função.
arguments[@@iterator]Retorna um novo objeto Array Iterator que contém os valores para cada índice dos argumentos.
Exemplos
>Definindo uma função que concatena várias strings
Este exemplo define uma função que concatena várias strings. O único argumento formal para a função é uma string que especifica os caracteres que separam os itens a concatenar. A função é definida como se segue:
function myConcat(separator) { var args = Array.prototype.slice.call(arguments, 1); return args.join(separator);}Você pode passar qualquer número de argumentos para essa função e ela cria uma lista usando cada argumento como um item na lista.
// returns "red, orange, blue"myConcat(", ", "red", "orange", "blue");// returns "elephant; giraffe; lion; cheetah"myConcat("; ", "elephant", "giraffe", "lion", "cheetah");// returns "sage. basil. oregano. pepper. parsley"myConcat(". ", "sage", "basil", "oregano", "pepper", "parsley");Definindo uma função que cria listas HTML
Este exemplo define uma função que cria uma string contatenado HTML para uma lista. O único argumento formal para a função é uma string que é "u" se a lista for desordenada (marcadores), ou "o" se a lista for ordenada (numerada). A função é definida como se segue:
function list(type) { var result = "<" + type + "l><li>"; var args = Array.prototype.slice.call(arguments, 1); result += args.join("</li><li>"); result += "</li></" + type + "l>"; // end list return result;}Você pode passar qualquer número de argumentos para essa função, e ela adiciona cada argumento como um item para uma lista do tipo indicado. Por exemplo:
var listHTML = list("u", "One", "Two", "Three");/* listHTML is:"<ul><li>One</li><li>Two</li><li>Three</li></ul>"*/Rest, default e parâmetros desestruturados
O objetoarguments pode ser usado em conjunto com os parâmetrosrest,default edestruturados.
function foo(...args) { return args;}foo(1, 2, 3); // [1,2,3]Enquanto a presença dos parâmetrosrest,default, oudesestruturados não alteram ocomportamento do objetoarguments no código em strict mode, existe uma sutil diferença para o código non-strict.
Quando uma função não-strictnão contém parâmetrosrest,default, oudesestruturados, os valores no objetoargumentsmodificam os valores dos argumentos (e vice-versa). Veja o código:
function func(a) { arguments[0] = 99; // updating arguments[0] also updates a console.log(a);}func(10); // 99e
function func(a) { a = 99; // updating a also updates arguments[0] console.log(arguments[0]);}func(10); // 99Quando uma função não-strictcontém parâmetrosrest,default, oudesestruturados, os valores no objetoargumentsnão modificam os valores dos argumentos (e vice-versa). Ao invés disso, eles refletem os argumentos fornecidos no momento da chamada:
function func(a = 55) { arguments[0] = 99; // updating arguments[0] does not also update a console.log(a);}func(10); // 10e
function func(a = 55) { a = 99; // updating a does not also update arguments[0] console.log(arguments[0]);}func(10); // 10e
function func(a = 55) { console.log(arguments[0]);}func(); // undefinedEspecificações
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-arguments-exotic-objects> |