I agree that pull requests that mass change from let to const are largely a waste of time, but usage of const vs let is a legitimate discussion within your team.
- Tabs vs spaces.
- Vi vs Emacs
- Weak vs strong typing
- where to place {} in block statements
- where to put commas
No, programming in general is susceptible to these trivial holy wars.
Not trying to derail the convo or take sides, but one of these is not like the others ;)
The ONLY holy war in JS is the semi-colon one
:^)
The point still stands
but yeah.
const foo = {bar: 1}
foo.bar = 2;
It will only avoid having the pointer re-pointed to another object. It's better to just try avoiding global variables, and use a naming convention like uppercase and/or underscore for constants and global variables.Const is probably only meant for constants like the name suggests.
I think something like this is pretty safe from reassigning:
{
let foo = 1
...
}
...
If you want more control over your properties, you can use the ES5 feature "defineproperty" where you can set writeable: false const foo = {bar: 1}
The only thing const about it is the reference `foo` cannot be reassigned: foo = something_else; // error
Unlike `const` in C++, `const` in javascript in not very useful in my opinion. `let` is shorter and more readable.> it can help you write stateless code if you assume immutability
Sorta. I mean you're right but at the same time if you're using const for an object or array then it doesn't really matter without `object.freeze()` because it's not immutable only the reference is and I don't think most JavaScript developers understand that (at least not most of the ones I've run into).
What constitutes holy wars are often the most accessible[1]
While I agree that const/let is a useful convention for communicating mutability, it isn't nearly a big enough deal to warrant the attention it receives from the community.
It's not just const/let; I rarely make a front end PR that isn't bike-shedded to death over subjective styling choices, single quotes vs double quotes, etc. It often feels like conforming to flavor-of-the-week, subjective decrees from frontend trendsetters is more important than the substantive work that your code is doing.