Ключевое отличие в возможности изменять значение объекта после его создания. Мутабельные типы позволяют прямое изменение, имутабельные — нет. При "изменении" имутабельного объекта на самом деле создается новый объект с новым значением.
Примеры:
Мутабельные типы:
ArrayObjectjavascript
javascript
Имутабельные типы:
StringNumberBooleannullundefinedSymbolBigIntjavascript
javascript
Сравнение:
| Признак | Мутабельные | Имутабельные |
|---|---|---|
| Изменение | Возможно после создания | Невозможно после создания |
| Новая ссылка | Остается прежней | Создается новая при "изменении" |
Понимание этого отличия критично для предсказуемости кода, работы с состояниями (например, в React с Redux) и оптимизации. Использование имутабельных данных упрощает отладку, позволяет легче реализовывать функции отмены (undo) и оптимизировать рендеринг в UI-фреймворках за счет простого сравнения ссылок.