Sobes.tech
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:

  • Array
  • Object
// 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:

  • String
  • Number
  • Boolean
  • null
  • undefined
  • Symbol
  • BigInt
// 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ů.