Junior
Муттабель жана иммутабель маалымат түрлөрүнүн негизги айырмасы эмнеде?
sobes.tech AI
AIден жооп
Ачкычтуу айырмачылык — бул объекттин маанисин түзүлгөндөн кийин өзгөртүүгө мүмкүнчүлүк берүү. Муттабельдүү түрлөр түздөн-түз өзгөртүүгө мүмкүндүк берет, имуттабельдүү — жок. "Өзгөртүү" имуттабельдүү объектте чын эле жаңы объект түзүлүп, жаңы мааниге ээ болот.
Мисалдар:
Муттабельдүү түрлөр:
ArrayObject
// Муттабельдүү мисал (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 }
Имутабельдүү түрлөр:
StringNumberBooleannullundefinedSymbolBigInt
// Имутабельдүү мисал (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-фреймворктордо рендерингди оңдоого жардам берет, шилтемелерди салыштыруу аркылуу оңой ишке ашырылат.