Каков принцип разработки константной переменной в javascript? - PullRequest
0 голосов
/ 04 октября 2019

Я задаюсь вопросом о принципе переменной const в javascript.

Я знаю, что const - это средняя постоянная переменная. Это означает const a = 1, и a не сможет переназначить значение. Но если я назначу объект переменной const (const a = { x: 1}), я все равно могу обновить значение полей внутри объекта, но не могу переназначить объект. Потому что назначение объекта const - это присвоение ссылки на объект переменной, а не на значение внутри них.

Но, если я скажу кому-то, кто ничего не знает о кодировании, const не сможет переназначить переменную. Я думаю, что они могут понять, что const a = { x: 1 } и a.x = 2 должны быть неудачными.

Итак, мне интересно, какова абстрактная идея разработки переменной const. Почему, во-первых, они думают, что const применимо только к ссылкам, а не к значению внутри них.

PS Извините за мою нарушенную грамматику английского языка. Я не носитель языка.

Ответы [ 2 ]

1 голос
/ 04 октября 2019

Возможно, существует неправильное представление о const, фактически он не создает неизменяемые переменные, а создает неизменяемую привязку.

пример:

 const myconst = YourObjectInstance;
 myonst  = AnotherInstanceOfObject // we will have an error here

с другой стороны:

 myconst.myProperty = 3 // will work fine because is a valid code

Таким образом, const создает привязку к этому конкретному объекту и гарантирует, что переменная myconst не будет иметь привязки любого другого объекта.

0 голосов
/ 04 октября 2019

Номер один - нет ничего, что называется «постоянными переменными». Правильная терминология - «константы».

Причина, по которой свойства объекта, объявленного вами как константа, могут быть изменены, заключается в том, что на объект ссылаются.

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')
}
...