Sobes.tech
Junior

Kuo skiriasi spread ir rest operatoriai?

sobes.tech AI

Atsakymas iš AI

Sklaidos operatorius (...) išplečia iteruojamus objektus (masyvus, eilutes) į atskirus elementus ir dažnai naudojamas masyvų kopijavimui, objektų sujungimui arba argumentų perdavimui funkcijoms. Likusių elementų operatorius (...) surenka likusius elementus į vieną masyvą, naudojamas destruktūrizacijoje arba funkcijų apibrėžime argumentų surinkimui.

Pavyzdžiai:

// Masyvo kopijos kūrimas
const arr1 = [1, 2, 3];
const arr2 = [...arr1]; // arr2 = [1, 2, 3]

// Masyvų sujungimas
const arr3 = [4, 5];
const combined = [...arr1, ...arr3]; // combined = [1, 2, 3, 4, 5]

// Argumentų perdavimas funkcijai
function sum(a, b, c) {
  return a + b + c;
}
const numbers = [1, 2, 3];
const result = sum(...numbers); // result = 6

Likusių elementų surinkimo pavyzdys:

// Masyvo destruktūrizacijoje likusių elementų surinkimas
const [first, ...restOfArray] = [1, 2, 3, 4]; // first = 1, restOfArray = [2, 3, 4]

// Argumentų surinkimas funkcijoje
function logArguments(arg1, ...restArgs) {
  console.log(arg1); // pirmas argumentas
  console.log(restArgs); // likusių argumentų masyvas
}
logArguments(1, 2, 3, 4); // Išves 1 ir [2, 3, 4]

Pagrindinis skirtumas yra jų paskirtyje: spread išplečia, rest surinkia.