Sobes.tech
Junior

Mis vahe on spread ja rest operaatoritel?

sobes.tech AI

Vastus AI-lt

Levitatore (...) laiendab korduvobjekte (massive, stringid) eraldi elementideks ning seda kasutatakse sageli massiivide koopiate tegemiseks, objektide ühendamiseks või argumentide edastamiseks funktsioonidele. Järelejäänud elementide operaator (...) kogub ülejäänud elemendid ühte massiivi, mida kasutatakse destruktureerimisel või funktsioonide määratlemisel argumentide kogumiseks.

Näited:

// Massiivi koopia loomine
const arr1 = [1, 2, 3];
const arr2 = [...arr1]; // arr2 = [1, 2, 3]

// Massiivide ühendamine
const arr3 = [4, 5];
const combined = [...arr1, ...arr3]; // combined = [1, 2, 3, 4, 5]

// Argumentide edastamine funktsioonile
function sum(a, b, c) {
  return a + b + c;
}
const numbers = [1, 2, 3];
const result = sum(...numbers); // result = 6

Järelejäänud elementide kogumine:

// Massiivi destruktureerimisel ülejäänud elementide kogumine
const [first, ...restOfArray] = [1, 2, 3, 4]; // first = 1, restOfArray = [2, 3, 4]

// Argumentide kogumine funktsioonis
function logArguments(arg1, ...restArgs) {
  console.log(arg1); // esimene argument
  console.log(restArgs); // ülejäänud argumentide massiiv
}
logArguments(1, 2, 3, 4); // Kuvab 1 ja [2, 3, 4]

Peamine erinevus nende eesmärkides: spread laiendab, rest kogub.