From 074785cea106179cb3305637055ab0a009ca74f2 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:42:52 -0500 Subject: initial commit --- .../reference/functions/rest_parameters/index.html | 178 +++++++++++++++++++++ 1 file changed, 178 insertions(+) create mode 100644 files/pt-br/web/javascript/reference/functions/rest_parameters/index.html (limited to 'files/pt-br/web/javascript/reference/functions/rest_parameters') diff --git a/files/pt-br/web/javascript/reference/functions/rest_parameters/index.html b/files/pt-br/web/javascript/reference/functions/rest_parameters/index.html new file mode 100644 index 0000000000..6bbcdacb8e --- /dev/null +++ b/files/pt-br/web/javascript/reference/functions/rest_parameters/index.html @@ -0,0 +1,178 @@ +--- +title: Parâmetros Rest +slug: Web/JavaScript/Reference/Functions/rest_parameters +translation_of: Web/JavaScript/Reference/Functions/rest_parameters +--- +
{{jsSidebar("Functions")}}
+ +

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

+ +

Sintaxe

+ +
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 para a, e o segundo para b) e assim por diante em todos os argumentos consecutivos.

+ +

Diferença entre rest parametersarguments object

+ +

Há três diferenças principais entre rest parameters e os arguments objects:

+ + + +

De arguments para array

+ +

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

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

Exemplos

+ +

Como  theArgs é um array, você pode pegar número de elementos usando a propriedade length:

+ +
function fun1(...theArgs) {
+  console.log(theArgs.length);
+}
+
+fun1();  // 0
+fun1(5); // 1
+fun1(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:

+ +
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 objeto arguments:

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

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

+ +

Especificações

+ + + + + + + + + + + + + + +
EspecificaçõesStatusComentário
{{SpecName('ES6', '#sec-function-definitions', 'Function Definitions')}}{{Spec2('ES6')}}Initial definition.
+ +

Compatibilidade

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome(47)}}{{CompatVersionUnknown}}{{CompatGeckoDesktop("15.0")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidAndroid WebviewFirefox Mobile (Gecko)IE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatNo}}{{CompatChrome(45)}}{{CompatGeckoMobile("15.0")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatChrome(47)}}
+
+ +

Veja também

+ + -- cgit v1.2.3-54-g00ecf