| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Functions/arguments | [Back] [Original] |
Get to know MDN better
Esta pgina foi traduzida do ingls pela comunidade. Saiba mais e junte-se comunidade MDN Web Docs.
This feature is well established and works across many devices and browser versions. Its been available across browsers since julho de 2015.
* Some parts of this feature may have varying levels of support.
O objeto arguments como um objeto Array correspondendo aos argumentos passados para uma funo.
arguments
O objeto arguments uma varivel local disponvel dentro de todas as funes. Voc pode referenciar os argumentos de uma funo dentro da funo usando o objeto arguments. Esse objeto contm um registro para cada argumento fornecido para a funo, com o ndice do primeiro registro comeando em 0. Por exemplo, se so passados trs argumentos para uma funo, voc pode referenci-los como a seguir:
arguments[0];
arguments[1];
arguments[2];
Os argumentos tambm podem ser definidos:
arguments[1] = "novo valor";
O objeto argumentos no um Array. similar a um Array, mas no possui as propriedades de Array, exceto length. Por exemplo, ele no possui o mtodo pop. Entretanto, ele pode ser convertido em um Array real:
var args = Array.prototype.slice.call(arguments);
var args = [].slice.call(arguments);
// ES2015
var args = Array.from(arguments);
Aviso:
Usar slice nos argumentos impedem otimizaes em alguns motores JavaScript (V8 por exemplo - mais informaes). Se voc precisar, tente construir um novo array iterando atravs dos argumentos do objeto. Uma alternativa seria usar o construtor do Array como uma funo:
var args =
arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments);
Voc pode usar o objeto arguments se voc chamar uma funo com mais argumentos do que ele formalmente declarado para aceitar. Esta tcnica til para funes que podem ser passada em um nmero de variveis de argumentos. Voc pode usar arguments.length para determinar o nmero de argumentos passado para a funo, e ento processar cada argumento usando o objeto arguments. Para determinar o nmero de parmetros declarados na assinatura da funo, use a propriedade Function.length.
O comando typeof arguments retorna 'object'.
console.log(typeof arguments); // 'object'
O typeof de argumentos individuais pode ser determinado com o uso do ndice.
console.log(typeof arguments[0]); //this will return the typeof individual arguments.
Voc tambm pode usar o mtodo Array.from() ou o operador spread para converter argumentos em um Array real:
var args = Array.from(arguments);
var args = [...arguments];
arguments.calleeReferncia para a funo atualmente em execuo.
arguments.callerReferncia para a funo que invocou a funo atualmente em execuo.
arguments.lengthReferncia para o nmero de argumentos passados para a funo.
arguments[@@iterator]Retorna um novo objeto Array Iterator que contm os valores para cada ndice dos argumentos.
Este exemplo define uma funo que concatena vrias strings. O nico argumento formal para a funo uma string que especifica os caracteres que separam os itens a concatenar. A funo definida como se segue:
function myConcat(separator) {
var args = Array.prototype.slice.call(arguments, 1);
return args.join(separator);
}
Voc pode passar qualquer nmero de argumentos para essa funo 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");
Este exemplo define uma funo que cria uma string contatenado HTML para uma lista. O nico argumento formal para a funo uma string que "u" se a lista for desordenada (marcadores), ou "o" se a lista for ordenada (numerada). A funo 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 nmero de argumentos para essa funo, 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>"
*/
O objeto arguments pode ser usado em conjunto com os parmetros rest, default e destruturados.
function foo(...args) {
return args;
}
foo(1, 2, 3); // [1,2,3]
Enquanto a presena dos parmetros rest, default, ou desestruturados no alteram o comportamento do objeto arguments no cdigo em strict mode, existe uma sutil diferena para o cdigo non-strict.
Quando uma funo no-strict no contm parmetros rest, default, ou desestruturados, os valores no objeto arguments modificam os valores dos argumentos (e vice-versa). Veja o cdigo:
function func(a) {
arguments[0] = 99; // updating arguments[0] also updates a
console.log(a);
}
func(10); // 99
e
function func(a) {
a = 99; // updating a also updates arguments[0]
console.log(arguments[0]);
}
func(10); // 99
Quando uma funo no-strict contm parmetros rest, default, ou desestruturados, os valores no objeto arguments no modificam os valores dos argumentos (e vice-versa). Ao invs 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); // 10
e
function func(a = 55) {
a = 99; // updating a does not also update arguments[0]
console.log(arguments[0]);
}
func(10); // 10
e
function func(a = 55) {
console.log(arguments[0]);
}
func(); // undefined
| Specification |
|---|
| ECMAScript 2027 LanguageSpecification # sec-arguments-exotic-objects |
This page was last modified on 27 de abr. de 2025 by MDN contributors.
Your blueprint for a better internet.
Portions of this content are 19982026 by individual mozilla.org contributors. Content available under a Creative Commons license.
| Web Proxy Viewer | New URL | Original Page |