Junior
Qual é a diferença entre os operadores spread e rest?
sobes.tech IA
Resposta da IA
O operador de espalhamento (...) expande objetos iteráveis (arrays, strings) em elementos individuais, sendo frequentemente usado para criar cópias de arrays, mesclar objetos ou passar argumentos para funções. O operador de rest (...) recolhe os elementos restantes num único array, sendo usado na destruturação ou na definição de funções para recolher argumentos.
Exemplos de uso do spread:
// Criar uma cópia de um array
const arr1 = [1, 2, 3];
const arr2 = [...arr1]; // arr2 = [1, 2, 3]
// Combinar arrays
const arr3 = [4, 5];
const combined = [...arr1, ...arr3]; // combined = [1, 2, 3, 4, 5]
// Passar argumentos para uma função
function sum(a, b, c) {
return a + b + c;
}
const numbers = [1, 2, 3];
const result = sum(...numbers); // result = 6
Exemplos de uso do rest:
// Recolher os elementos restantes ao fazer destruturação de um array
const [first, ...restOfArray] = [1, 2, 3, 4]; // first = 1, restOfArray = [2, 3, 4]
// Recolher argumentos numa função
function logArguments(arg1, ...restArgs) {
console.log(arg1); // primeiro argumento
console.log(restArgs); // array dos restantes argumentos
}
logArguments(1, 2, 3, 4); // Vai mostrar 1 e [2, 3, 4]
A principal diferença reside na sua finalidade: spread expande, rest agrupa.