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

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

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