| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Functions/rest_parameters | [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 setembro de 2016.
A sintaxe de rest parameter (parmetros rest) nos permite representar um nmero indefinido de argumentos como um array.
function(a, b, ...theArgs) {
// ...
}
Se o ltimo argumento nomeado de uma funo tiver prefixo com ..., ele ir se tornar um array em que os elemento de 0 (inclusive) at theArgs.length (exclusivo) so disponibilizados pelos argumentos atuais passados funo.
No exemplo acima, theArgs ir coletar o terceiro argumento da funo (porqu o primeiro mapeado para a, e o segundo para b) e assim por diante em todos os argumentos consecutivos.
arguments objectH trs diferenas principais entre rest parameters e os arguments objects:
arguments object contm todos os argumentos passados para a funo;arguments no um array, enquanto rest parameters so instncias Array, isso significa que mtodos como sort, map, forEach ou pop podem ser aplicados diretamente;arguments possui a funcionalidade adicional de especificar ele mesmo (como a propriedade callee).Rest parameters foram criados para reduzir o cdigo padro 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) {
}
Como theArgs um array, voc pode pegar nmero de elementos usando a propriedade length:
function fun1(...theArgs) {
console.log(theArgs.length);
}
fun1(); // 0
fun1(5); // 1
fun1(5, 6, 7); // 3
No prximo exemplo, ns usamos o rest parmetro para buscar argumentos do segundo parmetro para o fim. Ns multiplicamos eles pelo primeiro parmetro:
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 prximo exemplo mostra como voc pode usar metodos do Array em rest params, mas no 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.
| Specification |
|---|
| ECMAScript 2027 LanguageSpecification # sec-function-definitions |
This page was last modified on 17 de dez. de 2024 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 |