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 тавассути муқоисаҳои оддӣ бо ишораҳо мебошад.