Очень частая путаница в JavaScript:
const user = {
name: "Кодик",
level: 1
};
user.level = 2;
console.log(user);
И внезапно всё работает:
{ name: "Кодик", level: 2 }
Новичок в этот момент закономерно думает:
«А const тогда вообще что запрещает?» 😄
Вот что важно: const запрещает переприсвоить переменную, но не делает объект неизменяемым.
То есть так нельзя:
user = {
name: "Другой Кодик"
};
так — можно:
user.level = 2;
user.name = "Супер Кодик";
Почему?
Потому что переменная user хранит ссылку на объект.
const говорит:
ссылка должна остаться той же
Но сам объект по этой ссылке менять никто не запрещал.
Если очень хочется защитить объект от изменений, можно использовать:
Object.freeze(user);
Но и тут есть нюансы: заморозка не всегда работает глубоко для вложенных объектов.
📌 Поэтому простое правило:
const = нельзя заменить значение переменной.
Но если внутри лежит объект или массив — их содержимое менять можно.
🔥 У кого тоже был момент: «Так const же значит constant, почему оно меняется?!» 😄