I recently read about ES6 const
keyword and I can understand its importance when having something like this:
(function(){
const PI = 3.14;
PI = 3.15; // Uncaught TypeError: Assignment to constant variable
})();
So, nobody can change my PI
variable.
The misunderstanding I have is that I don't understand in which situation the use of const
with objects can make sense (other than preventing people to do myObj = newValue;
).
(function(){
const obj = {a:1 ,b: 2, c:3};
//obj = {x:7 , y:8, z: 9}
//This is good
//TypeError: Assignment to constant variable.
obj.a=7; obj.b=8 ; obj.c=9;
console.log(obj); //outputs: {a: 7, b: 8, c: 9}
})();
So when declaring an object: when should I say: Now I must declare my object with const
?
it is a common misconception around the web, CONST
doesn't creates immutable variables instead it creates immutable binding.
eg.
const temp1 = 1;
temp1 = 2 //error thrown here.
But
temp1.temp = 3 // no error here. Valid JS code as per ES6
so const
creates a binding to that particular object. const assures that variable temp1
won't have any other object's Binding.
Now coming to Object
. we can get immutable feature with Object
by using Object.freeze
const temp3 = Object.freeze( {a:3,b:4})
temp3.a = 2 // it wont update the value of a, it still have 3
temp3.c = 6 // still valid but wont change the object