Sobes.tech
Junior

У чему се састоји кључна разлика између мутабилних и имутабилних типова података?

sobes.tech АИ

Одговор од АИ

Ključna razlika leži u mogućnosti da se promeni vrednost objekta nakon njegovog kreiranja. Mutabilni tipovi omogućavaju direktne promene, dok nemutabilni to ne omogućavaju. Kada se "menja" nemutabilni objekat, u stvari se kreira novi objekat sa novom vrednošću.

Primeri:

Mutabilni tipovi:

  • Array
  • Object
// Mutabilni primer (Array)
let mutableArray = [1, 2];
mutableArray.push(3); // Menja postojeći niz
console.log(mutableArray); // Prikazuje: [1, 2, 3]
// Mutabilni primer (Object)
let mutableObject = { a: 1 };
mutableObject.b = 2; // Menja postojeći objekat
console.log(mutableObject); // Prikazuje: { a: 1, b: 2 }

Nemutabilni tipovi:

  • String
  • Number
  • Boolean
  • null
  • undefined
  • Symbol
  • BigInt
// Nemutabilni primer (String)
let immutableString = "zdravo";
immutableString = immutableString + " svet"; // Kreira se novi niz
console.log(immutableString); // Prikazuje: zdravo svet

// Poređenje referenci će pokazati razliku
let str1 = "abc";
let str2 = str1.toUpperCase();
console.log(str1 === str2); // Prikazuje: false
// Nemutabilni primer (Number)
let immutableNumber = 10;
immutableNumber = immutableNumber + 5; // Kreira se nova numerička vrednost
console.log(immutableNumber); // Prikazuje: 15

Poređenje:

Osobina Mutabilno Nemutabilno
Promena Moguća nakon kreiranja Nemoguća nakon kreiranja
Nova referenca Ostaje ista Kreira se nova pri "promeni"

Razumevanje ove razlike je ključno za predvidivost koda, rad sa stanjima (npr. u Reactu sa Reduxom) i optimizaciju. Korišćenje nemutabilnih podataka olakšava otklanjanje grešaka, omogućava lakšu implementaciju funkcija undo i optimizuje renderovanje u UI okvirima putem jednostavnih poređenja referenci.