Sobes.tech
Junior

Care este diferența cheie dintre tipurile de date mutabile și imutabile?

sobes.tech AI

Răspuns de la AI

Diferența cheie constă în capacitatea de a modifica valoarea obiectului după crearea sa. Tipurile mutabile permit modificări directe, în timp ce tipurile imutabile nu. La "modificarea" unui obiect imutabil, de fapt, se creează un nou obiect cu o valoare nouă.

Exemple:

Tipuri mutabile:

  • Array
  • Object
// Exemplu mutabil (Array)
let mutableArray = [1, 2];
mutableArray.push(3); // Modifică array-ul existent
console.log(mutableArray); // Va afișa: [1, 2, 3]
// Exemplu mutabil (Object)
let mutableObject = { a: 1 };
mutableObject.b = 2; // Modifică obiectul existent
console.log(mutableObject); // Va afișa: { a: 1, b: 2 }

Tipuri imutabile:

  • String
  • Number
  • Boolean
  • null
  • undefined
  • Symbol
  • BigInt
// Exemplu imutabil (String)
let immutableString = "salut";
immutableString = immutableString + " lume"; // Se creează un nou șir
console.log(immutableString); // Va afișa: salut lume

// Compararea referințelor va arăta diferența
let str1 = "abc";
let str2 = str1.toUpperCase();
console.log(str1 === str2); // Va afișa: false
// Exemplu imutabil (Number)
let immutableNumber = 10;
immutableNumber = immutableNumber + 5; // Se creează o nouă valoare numerică
console.log(immutableNumber); // Va afișa: 15

Comparare:

Caracteristică Mutabil Imutabil
Modificare Posibil după creare Imposibil după creare
Nouă referință Rămâne aceeași Se creează una nouă la "schimbare"

Înțelegerea acestei diferențe este critică pentru predictibilitatea codului, lucrul cu stările (de exemplu, în React cu Redux) și optimizare. Utilizarea datelor imutabile simplifică depanarea, permite implementarea mai ușoară a funcțiilor de undo și optimizează randarea în cadrul UI prin compararea simplă a referințelor.