3 ms·
> `var` is broken Nonsense. Revisionism at its finest. But that's an argument I made in a different blog post: http://davidwalsh.name/for-and-against-let http
by _getify 11y ago
> `var` is broken
Nonsense. Revisionism at its finest.
But that's an argument I made in a different blog post: http://davidwalsh.name/for-and-against-let http://davidwalsh.name/for-and-against-let
> It would be nicer to have real, deep immutability, but `const` isn't it.
Yep, agree with you on that. That was one of the main points of my post.
> Because `const` requires to be initialized at the time of definition, you know the variable is valid for its entire lifetime.
No, that's where you're mistaken. All you really know is that the variable assignment is reliable. If the assignment happens to be of an immutable value, great.
But given the choice between these two guarantees:
1. The assignment is immutable
2. The value is immutable
(1) is almost pointless -- and a quick scan of your small block where it's scoped will verify that or not.
(2) is the absolute important one.
`const` masquerades as (2) when it's really only (1). That's what I don't like about it.
- Retra 11y agoYour blog post doesn't make a very strong argument, honestly.
- _getify 11y agoI would genuinely (no sarcasm) like to read a blog post that makes a stronger argument (in either direction) than mine. Most blog posts I've read about `const` cite very flimsy things like "it makes my code more readable" without any real meat as to why that's true. I tried to debunk that with careful thought. If someone has more convincing arguments besides subjective opinion, I'd love to read them.
- Dylan16807 11y ago>I tried to debunk that with careful thought. Well you didn't really succeed. Your argument against using const comes down to "someone might violate expectations or remove the word const, so let's not even try". I don't agree with that. Traditional constants are used to show that nothing changes in large swaths of code; showing how much benefit you get in a standalone 12 line function is not meaningful. Also, calling function scoping bad is not revisionism. That is not a new idea, and does not depend on 'let' existing. Edit: And the the article you linked about let is saying so many ridiculous things I won't even try to respond to it, but jeez. 'implicit'
- _getify 11y ago> Your argument against using const comes down to ... You did an absolutely horrible job of summarizing even remotely what my argument was, so I guess "I won't even try to respond to" this, since you either can't critically read or didn't care to this time. jeez.
- Dylan16807 11y agoThat's what you devote several paragraphs to. I'm not sure how else you explain quotes like "the likelihood is that a developer who needs to change a variable and gets a const-thrown error about it will probably just change the const to let and go on about their business." I don't care to argue about 'let' because this is a post about 'const'. I was writing a rebuttal in the previous comment but realized it was way too off-topic. But your definition and reasoning for "implicit scope" hurts me to read.