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.