Junior
V čom spočíva kľúčový rozdiel medzi mutabilnými a nemutabilnými dátovými typmi?
sobes.tech AI
Odpoveď od AI
Kľúčový rozdiel spočíva v schopnosti meniť hodnotu objektu po jeho vytvorení. Mutabilné typy umožňujú priame zmeny, zatiaľ čo nemutabilné nie. Pri "zmenách" nemutabilného objektu sa v skutočnosti vytvorí nový objekt s novou hodnotou.
Príklady:
Mutabilné typy:
ArrayObject
// Mutabilný príklad (Array)
let mutableArray = [1, 2];
mutableArray.push(3); // Mení existujúci pole
console.log(mutableArray); // Ukáže: [1, 2, 3]
// Mutabilný príklad (Object)
let mutableObject = { a: 1 };
mutableObject.b = 2; // Mení existujúci objekt
console.log(mutableObject); // Ukáže: { a: 1, b: 2 }
Nemutabilné typy:
StringNumberBooleannullundefinedSymbolBigInt
// Nemutabilný príklad (String)
let immutableString = "ahoj";
immutableString = immutableString + " svet"; // Vytvorí sa nový reťazec
console.log(immutableString); // Ukáže: ahoj svet
// Porovnanie referencií ukáže rozdiel
let str1 = "abc";
let str2 = str1.toUpperCase();
console.log(str1 === str2); // Ukáže: false
// Nemutabilný príklad (Number)
let immutableNumber = 10;
immutableNumber = immutableNumber + 5; // Vytvorí sa nová číselná hodnota
console.log(immutableNumber); // Ukáže: 15
Porovnanie:
| Vlastnosť | Mutabilné | Nemutabilné |
|---|---|---|
| Zmena | Možná po vytvorení | Nie je možná po vytvorení |
| Nová referencia | Zostáva rovnaká | Pri "zmene" sa vytvorí nová |
Pochopenie tohto rozdielu je kľúčové pre predvídateľnosť kódu, prácu so stavmi (napríklad v React s Reduxom) a optimalizáciu. Použitie nemutabilných dát zjednodušuje ladenie, umožňuje jednoduché funkcie undo a optimalizuje renderovanie v UI rámcoch prostredníctvom jednoduchého porovnania referencií.