Номер один - нет ничего, что называется «постоянными переменными». Правильная терминология - «константы».
Причина, по которой свойства объекта, объявленного вами как константа, могут быть изменены, заключается в том, что на объект ссылаются.
var i = 200;
const c = 300;
const o = {foo: "bar"}
Теперь вПриведенный выше пример
Символ i
по понятным причинам является переменной, значение которой равно 200.
Символ c
- это константа, значение которой равно 300.
Символ o
- это константа, которая относится к объекту. Значение o
является адресом памяти , который указывает на объект. Что нельзя изменить, так это адрес памяти, а не то, что находится в самом адресе.
const o = {foo: "bar"};
o.bar = "foo"; //The object properties, whats in the memory location the constant points to, can be changed
console.log(o);
try {
o = {bar: "foo"}
console.log('I changed the value of a constant')
}
catch(e) {
console.log('I cannot change the value of a constant. But whatever in the memory where the value is pointing to')
}