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.