re: Similar yet different. So confusing VIEW POST

re: const a = { x: 1 } a = { x: 1 } // TypeError: Assignment to constant variable. I would say referential transparency is in different realm, this...

I might be wrong, but

const a = {x: 1}

is actually assigning a pointer to an object to a, so this:

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

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
code of conduct - report abuse