Junior
Kuo skiriasi pagrindiniai keičiamų ir nekintamų duomenų tipai?
sobes.tech AI
Atsakymas iš AI
Pagrindinis skirtumas yra galimybė keisti objekto reikšmę po jos sukūrimo. Mutabilūs tipai leidžia tiesiogiai keisti, o imutabilūs — ne. Kai "keičiama" imutabili objekto reikšmė, iš tikrųjų sukuriamas naujas objektas su nauja reikšme.
Pavyzdžiai:
Mutabilūs tipai:
ArrayObject
// Mutabilus pavyzdys (Array)
let mutableArray = [1, 2];
mutableArray.push(3); // Keičiamas esamas masyvas
console.log(mutableArray); // Išvestis: [1, 2, 3]
// Mutabilus pavyzdys (Object)
let mutableObject = { a: 1 };
mutableObject.b = 2; // Keičiamas esamas objektas
console.log(mutableObject); // Išvestis: { a: 1, b: 2 }
Imutabilūs tipai:
StringNumberBooleannullundefinedSymbolBigInt
// Imutabilus pavyzdys (String)
let immutableString = "привет";
immutableString = immutableString + " мир"; // Sukuriamas naujas eilutė
console.log(immutableString); // Išvestis: привет мир
// Nuorodų palyginimas parodys skirtumą
let str1 = "abc";
let str2 = str1.toUpperCase();
console.log(str1 === str2); // Išvestis: false
// Imutabilus pavyzdys (Number)
let immutableNumber = 10;
immutableNumber = immutableNumber + 5; // Sukuriama nauja skaitinė reikšmė
console.log(immutableNumber); // Išvestis: 15
Palyginimas:
| Bruožas | Mutabilūs | Imutabilūs |
|---|---|---|
| Keitimas | Galimas po sukūrimo | Negalimas po sukūrimo |
| Nauja nuoroda | Lieka ta pati | Sukuriama nauja "keičiamu" metu |
Šis skirtumas yra kritiškai svarbus prognozuojamumui, būsenų valdymui (pvz., React su Redux) ir optimizacijai. Naudojant imutabilius duomenis, palengvinama derinimas, leidžia lengviau įgyvendinti atšaukimo funkcijas (undo) ir optimizuoti UI atvaizdavimą, palyginant nuorodas.