I might be wrong, but
const a = {x: 1}
is actually assigning a pointer to an object to a, so this:
a
const a = {x: 1}; a = {x: 2};
cannot work, because you are changing the value of a with a new pointer.
no problem with
a.x = 2
because you don't change the value of a: it's still the same pointer to the same object.
So to me it's correct to say const for immutability, because in your example it's not possible to change the real value of a (which is an address).
const
As I said, I might be wrong, but it's how I understand the concept and for now it hasn't failed me yet 😄
Referential transparency - means you can't reassign variable.
const a = { x: 1 }; const b = a; a.x = 2; a === b; //true, because it is the same reference
Immutability - means you can't mutate object.
let a = Object.freeze({x : 1}) a.x = 2; a.x === 1; // true, because a is immutable
Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment's permalink.
Hide child comments as well
Confirm
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
I might be wrong, but
is actually assigning a pointer to an object to
a
, so this:cannot work, because you are changing the value of
a
with a new pointer.no problem with
because you don't change the value of
a
: it's still the same pointer to the same object.So to me it's correct to say
const
for immutability, because in your example it's not possible to change the real value ofa
(which is an address).As I said, I might be wrong, but it's how I understand the concept and for now it hasn't failed me yet 😄
Referential transparency - means you can't reassign variable.
Immutability - means you can't mutate object.