4 ms·
The great thing about let and const, for me, is that it gives you crucial information about variables without having to look further down. const should be the
by bb85 10y ago
The great thing about let and const, for me, is that it gives you crucial information about variables without having to look further down.
const should be the default, and if you're going to reassign it, then use let.
In most code, you'll use const on the vast majority of variables, and it'll make let assignments stick out, which helps a lot when you're browsing the code or refactoring.
- spraak 10y agoThis right here. One of my friends (a more experienced developer) told me at coffee one day, "I use const for everything" which really stuck with me. It really helps make it clear if you need a mutation to have let stand out.
- rpastuszak 10y agoHowever, it's worth noting that using const doesn't make variables immutable. It only protects them of being reassigned: const val = 'a'; val = 'b'; // TypeError const obj = { val: 'a' }; obj.val = 'b'; // This line will still work. obj = { val: 'b' }; // TypeError
- dcherman 10y agoYep. In those cases, I still prefer let personally even though I know the variable itself will not be re-assigned, kind of as an indicator that I expect the referenced object to be mutated.
- candu 10y agoComing from a background that includes some experience with C / C++, `const` here works as I expect it to. I'd prefer `const` even for the object reference case: I get errors on reassignment this way, and presumably it makes additional optimizations possible. To each their own, I suppose :) There's also `Object.defineProperty()`, `Object.freeze()` for more control over mutability.
- WorldMaker 10y agoI just wish let was in fact const (and something like "local" could be let), simply because the keyword let is nicer to type, easier to read, and more importantly better in line with the meaning of let in Lisp/Scheme/ML/OCaml/et al.
- spraak 10y agoYeah, I was thinking the same! I was even considering writing a custom babel transform to do this for me :P