Junior
V čem spočívá klíčový rozdíl mezi mutabilními a imutabilními datovými typy?
sobes.tech AI
Odpověď od AI
Hlavní rozdíl spočívá v možnosti změnit hodnotu objektu po jeho vytvoření. Měnitelné typy umožňují přímé změny, zatímco neměnitelné nikoliv. Při "změně" neměnitelného objektu se ve skutečnosti vytvoří nový objekt s novou hodnotou.
Příklady:
Měnitelné typy:
ArrayObject
// Měnitelný příklad (Array)
let mutableArray = [1, 2];
mutableArray.push(3); // Změní existující pole
console.log(mutableArray); // Ukáže: [1, 2, 3]
// Měnitelný příklad (Object)
let mutableObject = { a: 1 };
mutableObject.b = 2; // Změní existující objekt
console.log(mutableObject); // Ukáže: { a: 1, b: 2 }
Neměnitelné typy:
StringNumberBooleannullundefinedSymbolBigInt
// Neměnitelné (String)
let immutableString = "ahoj";
immutableString = immutableString + " svět"; // Vytvoří se nový řetězec
console.log(immutableString); // Ukáže: ahoj svět
// Porovnání odkazů ukáže rozdíl
let str1 = "abc";
let str2 = str1.toUpperCase();
console.log(str1 === str2); // Ukáže: false
// Neměnitelné (Number)
let immutableNumber = 10;
immutableNumber = immutableNumber + 5; // Vytvoří se nová číselná hodnota
console.log(immutableNumber); // Ukáže: 15
Porovnání:
| Vlastnost | Měnitelné | Neměnitelné |
|---|---|---|
| Změna | Po vytvoření možná | Po vytvoření nemožná |
| Nová reference | Zůstává stejná | Při "změně" se vytvoří nová |
Porozumění tomuto rozdílu je klíčové pro předvídatelnost kódu, práci se stavy (například v React s Redux) a optimalizaci. Použití neměnných dat zjednodušuje ladění, umožňuje snadnější implementaci funkcí undo a optimalizuje vykreslování v UI rámcích pomocí jednoduchého porovnání odkazů.