As I slowly make my way into the land of ES6 (sure I started mid-2016 when all the cool kids were doing it for years) I've been presented with the problem of: when do you use const
and when do you use let
and do I still use var
.
Context: node.js
TL,DR: always use const
, except for primitives whose value will change, then use let
.
🚮 var: no more
Don't use var
at all. Which sucks, because I've got over 17 years of muscle memory writing var
.
Which is sort of sad because now I can't do any magic hoisting. Which, in fact is almost enough by itself to stop using var
. However, we also now have const
and let
to define variables and var
really isn't needed.
Honestly, I can't see the need for this (again, context is Node) at all anymore…maybe I'm wrong?
💎 const: always, but not always
The first important thing to always keep in mind when using const
is that it's not really really constant. Or more specifically, it doesn't make objects immutable.
The best way (I've found) to think of const
is that the variable that you assign with const
is an immutable pointer. Primitive types, such as strings, booleans and numbers can't be changed - since the variable is pointing directly at the primitive (so you can't do const a = 10; a++
). Objects and arrays on the other hand, can have their properties changed.
However, it's been argued by many that using const
is a way to document your intent with a variable to a future reader of the code. My thoughts: always use const
.
☔️ let: the exception
Assuming you (or I) only use const
, the only exception is when I know that the variable's contents will change. For instance, in a for
loop, or some dynamic allocation. Then, and only then, do I need to use let
.
Filing this post under "stuff I shoulda learnt 18 months ago"