Sobes.tech
Junior

Ի՞նչ է հիմնական տարբերությունը մուտաբել և իմուտաբել տվյալների տեսակների միջև։

sobes.tech AI

Պատասխան AI-ից

Հիմնական տարբերությունը կայ այն մեջ, որ հնարավոր է փոփոխել օբյեկտի արժեքը նրա ստեղծումից հետո։ Մուտաբլ տիպերը թույլ են տալիս ուղղակի փոփոխություններ, իսկ իմուտաբլ տիպերը՝ ոչ։ Երբ «փոփոխում» է իմուտաբլ օբյեկտը, իրականում ստեղծվում է նոր օբյեկտ նոր արժեքով։

Օրինակներ՝

Մուտաբլ տիպեր՝

  • Array
  • Object
// Մուտաբլ օրինակ (Array)
let mutableArray = [1, 2];
mutableArray.push(3); // Փոխում է առկա զանգվածը
console.log(mutableArray); // Ցույց կտա՝ [1, 2, 3]
// Մուտաբլ օրինակ (Object)
let mutableObject = { a: 1 };
mutableObject.b = 2; // Փոխում է առկա օբյեկտը
console.log(mutableObject); // Ցույց կտա՝ { a: 1, b: 2 }

Իմուտաբլ տիպեր՝

  • String
  • Number
  • Boolean
  • null
  • undefined
  • Symbol
  • BigInt
// Իմուտաբլ օրինակ (String)
let immutableString = "բարև";
immutableString = immutableString + " աշխարհ"; // Ստեղծվում է նոր տող
console.log(immutableString); // Ցույց կտա՝ բարև աշխարհ

// Հղումների համեմատությունը ցույց կտա տարբերությունը
let str1 = "abc";
let str2 = str1.toUpperCase();
console.log(str1 === str2); // Ցույց կտա՝ false
// Իմուտաբլ օրինակ (Number)
let immutableNumber = 10;
immutableNumber = immutableNumber + 5; // Ստեղծվում է նոր թվային արժեք
console.log(immutableNumber); // Ցույց կտա՝ 15

Համեմատություն՝

Գծագիր Մուտաբլ Իմուտաբլ
Փոփոխություն Միջնորդական հնարավոր է ստեղծելուց հետո Չի հնարավոր ստեղծելուց հետո
Նոր հղում մնում է նույնը ստեղծվում է նոր "փոփոխության" ժամանակ

Այս տարբերությունը հասկանալը կարևոր է կոդի կանխատեսելիության համար, վիճակների հետ աշխատելու (օրինակ, React-ով Redux-ով) և օպտիմիզացիայի համար։ Իմուտաբլ տվյալների օգտագործումը հեշտացնում է սխալների հայտնաբերում, թույլ է տալիս հեշտությամբ իրականացնել վերականգնում (undo) ֆունկցիաներ և օպտիմալացնում է UI-ֆրեյմվորկների ռենդերինգը պարզ համեմատությունների միջոցով։