Constants in Javascript - ECMAScript 6
06 Jun 2016
Const
In ECMAScript 6 we have const
variable arrived. Does it work the same as C++ const
?
Not exactly. I would even say, “not at all”.
When you declare something with const
in ECMAScript 6, it means that the identifier can’t be reassigned.
What does it mean?
- It means that you cannot declare that variable more than once. Because its binding is immutable.
- You have guaranty that no rebinding will happen to it.
- You will not be able to change its type.
- If your
const
variable is a simple value, likestring
,number
,boolean
etc. you also wouldn’t be able to change its value.
So let’s look how does it work:
Declaration
Very simple. Just use const
instead of var
:
The value of a constant doesn’t have to to be known at compile time, but you must assign it a value exactly once.
Const
and scopes
Redeclaring:
Constants can’t be redeclared.
Function scope:
You can declare const
inside the function scope with the same as outside it, but you actually have local scoped const
.
You cannot reach const
outside scope:
Ok that’s easy. But also you cannot reach const by this
, because it is block-scoped:
Deleting and changing value of const
You cannot change value or delete a simple constant variable.
Const
Objects
If you declare const
Object, you will not be able to delete it, or make it array
or string
, but you will be able to declare, change and even delete values of your const
Object.
But there is the way to freeze
the Object with its values:
So where to use const
?
Use const
when you don’t need reassign the identifier. In practice it is becoming the brand new var
for objects and arrays.
Because if you need to change type of any of them, it seems you wrote bad, not semantic code.
And what about let
?
Read more in the LET in ECMAScript 6
ES 2015 provided const
and let
to let us write var
-free javascript. So are you going to use var
again? :)