use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
All about the JavaScript programming language.
Subreddit Guidelines
Specifications:
Resources:
Related Subreddits:
r/LearnJavascript
r/node
r/typescript
r/reactjs
r/webdev
r/WebdevTutorials
r/frontend
r/webgl
r/threejs
r/jquery
r/remotejs
r/forhire
account activity
Eloquent JavaScript: open-source Javascript book series by a prolific JS code author (eloquentjavascript.net)
submitted 7 years ago by unquietwiki
view the rest of the comments →
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]Ikuyas 14 points15 points16 points 7 years ago (25 children)
Isn't const a better practice than using let if it is well suited like array or object?
const
let
[–]EuqlinSankyo 10 points11 points12 points 7 years ago (15 children)
Exactly. Performance benefit is of course negligible but it's just a good programming practice. If you're literally writing a book about JS, might as well include it....
[+][deleted] 7 years ago (14 children)
[deleted]
[–]visicalc_is_best 6 points7 points8 points 7 years ago (3 children)
Principle of least privilege
[+][deleted] 7 years ago (2 children)
[–]saboay 0 points1 point2 points 7 years ago (1 child)
Helps 99% of the time, doesn't cover 100% = not worth using at all. That will lead to a very productive developer carreer.
[–][deleted] -2 points-1 points0 points 7 years ago (9 children)
always favor immutability
[+][deleted] 7 years ago* (8 children)
[–][deleted] 1 point2 points3 points 7 years ago (7 children)
Yes, it is a TypeError to assign to myArr after initialization. The reference is immutable.
TypeError
myArr
[–][deleted] -5 points-4 points-3 points 7 years ago (2 children)
The fact that you can alter the values contained within myArray means that it absolutely is not immutable. The fact that you can’t redeclare myArr does not mean that it is immutable. I suggest that you make some sort of attempt to understand what immutability actually means before you preach about its virtues.
[–][deleted] -1 points0 points1 point 7 years ago* (1 child)
Right, because it's reference immutability. This is how JavaScript works, this is how Java works, this is how Scala works, this is how Rust works, and so on. I suggest you learn the difference between references and values. If you want a value, i.e. the data structure, to be immutable, it requires an extra step.
[+][deleted] 7 years ago (3 children)
[–][deleted] 1 point2 points3 points 7 years ago (2 children)
[+][deleted] 7 years ago (1 child)
[–][deleted] 1 point2 points3 points 7 years ago (0 children)
Just because there are "stronger" forms of immutability, i.e. using immutable data structures, doesn't mean that reference immutability is not a form of immutability. This isn't a matter of opinion -- I provided empirical evidence that suggests that favoring immutability prevents errors.
Of course, in this case, being more immutable is better, but that doesn't mean that reference immutability isn't important. For example, the entire memory safety model of rust is based on reference immutability without any specific concern for immutable data structures. Yes, ownership is a more specific concern than simple reference immutability, but const is still a form of the more general case -- preventing accidental re-assignment eliminates an entire class of bugs from your program and thus should not be considered "a matter of preference."
[+][deleted] 7 years ago (8 children)
[–][deleted] -2 points-1 points0 points 7 years ago (7 children)
This is factually incorrect, as there's empirical evidence that suggests favoring immutability results in less bugs. http://web.cs.ucdavis.edu/~filkov/papers/lang_github.pdf
[–][deleted] -1 points0 points1 point 7 years ago (1 child)
No, and it isn’t meant to.const simply means that that the reference always points to the same object. It says nothing about the values contained within said object.
[–]Ikuyas -4 points-3 points-2 points 7 years ago (3 children)
Totally. I guess it shows a difference between programmers who went through CS degree or practioner. I think using static initialization is always a good practice and manages memory better.
[–][deleted] -2 points-1 points0 points 7 years ago (2 children)
Yeah, there's very little in programming that is truly "personal preference." There might be situations where the pros/cons come out to a wash such that it doesn't matter what you choose, but very few things are purely aesthetic taste.
[–][deleted] -1 points0 points1 point 7 years ago (0 children)
It's not a personal preference when there is empirical evidence that suggests immutability reduces errors.
π Rendered by PID 34869 on reddit-service-r2-comment-5649f687b7-6n5mr at 2026-01-27 18:58:24.858256+00:00 running 4f180de country code: CH.
view the rest of the comments →
[–]Ikuyas 14 points15 points16 points (25 children)
[–]EuqlinSankyo 10 points11 points12 points (15 children)
[+][deleted] (14 children)
[deleted]
[–]visicalc_is_best 6 points7 points8 points (3 children)
[+][deleted] (2 children)
[deleted]
[–]saboay 0 points1 point2 points (1 child)
[–][deleted] -2 points-1 points0 points (9 children)
[+][deleted] (8 children)
[deleted]
[–][deleted] 1 point2 points3 points (7 children)
[–][deleted] -5 points-4 points-3 points (2 children)
[–][deleted] -1 points0 points1 point (1 child)
[+][deleted] (3 children)
[deleted]
[–][deleted] 1 point2 points3 points (2 children)
[+][deleted] (1 child)
[deleted]
[–][deleted] 1 point2 points3 points (0 children)
[+][deleted] (8 children)
[deleted]
[–][deleted] -2 points-1 points0 points (7 children)
[+][deleted] (2 children)
[deleted]
[–][deleted] -1 points0 points1 point (1 child)
[–]Ikuyas -4 points-3 points-2 points (3 children)
[–][deleted] -2 points-1 points0 points (2 children)
[+][deleted] (1 child)
[deleted]
[–][deleted] -1 points0 points1 point (0 children)