Rest Parameters
Utilizado para analisar cada elemento de um array.
-
Resumo/Informações
- What it does
Rest parameters allows us to pass an arbitrary (random choice) number of arguments into a function, and use these arguments in that function.
Utiliza o ...
No Spread Operator, recebe-se um array de elementos e transforma-o em um com single values.
Já o Rest Parameters recebe-se um array e utiliza-o como single values. -
Examples
Function that recieves an arbitrary number of years and prints to the console whether each person corresponding to these years is of full age or not.
ES5
function isFullAge5() {
//console.log(arguments);
a) arguments é uma palavra que temos acesso em todas as funções, aqui utilizada para sabermos todos os argumentos dessa função.
b) This will return [1990, 1999, 1965], which are the arguments passed to the function, however, this is an array-like stucture, but not an array. So it must be converted to an array.
c) To use this return as an array, and be able to loop through it, we must transform it, using slice.
var argsArr = Array.prototype.slice.call(arguments);
argsArr.forEach(function(cur){ cur is the current element of the array that is being looped through
console.log((2016 - cur) >= 18); in this case, the cur will be the years of the array, passed through arguments to the isFullAge5 function
});
}
isFullAge(1990, 1999, 1965);
ES6
function isFullAge6(...years) { When we call the function, it will transform the arguments into an array and then pass them into this function
years.forEach((cur => 2016 - cur) >= 18);
}
isFullAge6(1990, 1999, 1965);
Another Example
ES5
function isFullAge5(limit) {
//console.log(arguments); [21, 1990, 1999, 1965]
a) arguments é uma palavra que temos acesso em todas as funções, aqui utilizada para sabermos todos os argumentos dessa função.
b) This will return [1990, 1999, 1965], which are the arguments passed to the function, however, this is an array-like stucture, but not an array. So it must be converted to an array.
c) To use this return as an array, and be able to loop through it, we must transform it, using slice.
var argsArr = Array.prototype.slice.call(arguments, 1); visto que precisamos do primeiro item do array para o argumentos limit e o resto poderá ser utilizado para o loop de years, utiliza-se o slice para obrigar a começar da position 1 (visto que a zero é 21).
console.log(argsArr); [1990, 1999, 1965]
argsArr.forEach(function(cur){ cur is the current element of the array that is being looped through
console.log((2016 - cur) >= limit); in this case, the cur will be the years of the array, passed through arguments to the isFullAge5 function
});
}
isFullAge(21, 1990, 1999, 1965);
ES6
function isFullAge6(limit, ...years) { When we call the function, it will transform the arguments into an array and then pass them into this function
years.forEach((cur => 2016 - cur) >= limit);
}
isFullAge6(16, 1990, 1999, 1965);
** Veja como é bem mais fácil fazer o processo aqui, visto que o primeiro argumento será o limit e o resto será o array years.