Movatterモバイル変換


[0]ホーム

URL:


  1. Tecnologia Web para desenvolvedores
  2. JavaScript
  3. Referência JavaScript
  4. Funções
  5. Parâmetros Rest

Esta página foi traduzida do inglês pela comunidade.Saiba mais e junte-se à comunidade MDN Web Docs.

View in EnglishAlways switch to English

Parâmetros Rest

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨setembro de 2016⁩.

A sintaxe derest parameter (parâmetros rest) nos permite representar um número indefinido de argumentos como um array.

Sintaxe

js
function(a, b, ...theArgs) {  // ...}

Descrição

Se o último argumento nomeado de uma função tiver prefixo com..., ele irá se tornar um array em que os elemento de 0 (inclusive) até theArgs.length (exclusivo) são disponibilizados pelos argumentos atuais passados à função.

No exemplo acima,theArgs irá coletar o terceiro argumento da função (porquê o primeiro é mapeado paraa, e o segundo parab) e assim por diante em todos os argumentos consecutivos.

Diferença entrerest parameters earguments object

Há três diferenças principais entrerest parameters e osarguments objects:

  • rest parameters são os únicos que não foram atribuidos a um nome separado, enquanto osarguments object contêm todos os argumentos passados para a função;
  • o objetoarguments não é um array, enquanto rest parameters são instânciasArray, isso significa que métodos comosort,map,forEach oupop podem ser aplicados diretamente;
  • o objetoarguments possui a funcionalidade adicional de especificar ele mesmo (como a propriedadecallee).

De arguments para array

Rest parameters foram criados para reduzir o código padrão que foi induzida pelos argumentos

js
// Antes rest parameters, o seguinte codigo pode ser encontradofunction f(a, b){  var args = Array.prototype.slice.call(arguments, f.length);  // ...}// esse é o equivalentefunction(a, b, ...args) {}

Exemplos

ComotheArgs é um array, você pode pegar número de elementos usando a propriedadelength:

js
function fun1(...theArgs) {  console.log(theArgs.length);}fun1(); // 0fun1(5); // 1fun1(5, 6, 7); // 3

No próximo exemplo, nós usamos o rest parâmetro para buscar argumentos do segundo parâmetro para o fim. Nós multiplicamos eles pelo primeiro parâmetro:

js
function multiply(multiplier, ...theArgs) {  return theArgs.map(function (element) {    return multiplier * element;  });}var arr = multiply(2, 1, 2, 3);console.log(arr); // [2, 4, 6]

O próximo exemplo mostra como você pode usar metodos do Array em rest params, mas não no objetoarguments:

js
function sortRestArgs(...theArgs) {  var sortedArgs = theArgs.sort();  return sortedArgs;}console.log(sortRestArgs(5, 3, 7, 1)); // Exibe 1,3,5,7function sortArguments() {  var sortedArgs = arguments.sort();  return sortedArgs; // isso nunca irá ocorrer}// throws a TypeError: arguments.sort is not a functionconsole.log(sortArguments(5, 3, 7, 1));

a fim de usar o objetoarguments, você precisará converte-lo para um array antes.

Especificações

Specification
ECMAScript® 2026 Language Specification
# sec-function-definitions

Compatibilidade

Veja também

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp