6 ms·
Few people do that outside of code obfuscation contests, but the point is JS has heaps of gotchas like that, each waiting to bite you. How about: x = 5; (no v
by b0rsuk 7y ago
Few people do that outside of code obfuscation contests, but the point is JS has heaps of gotchas like that, each waiting to bite you. How about:
x = 5;
(no var declaration). Extremely easy to do by accident. Lots of these will be left for backwards compatibility. In JS errors often go silent and I developed a strong dislike for any language that does that, including Vimscript and Lua (and I do like Vim).
- jimws 7y agoProblems like this can be easily caught by linters like eslint or standardjs.
- nobleach 7y agoI'd agree that global declaration is far more egregious. A sibling comment recommends a linter, and I'd probably agree. It's sad that it was ever allowed as one that is copying and pasting code to another location can easily cause this case to happen.
- s_y_n_t_a_x 7y agoNo JS developer would do that. We all know that is global. Nowadays you use `const` or `let`. Any JS developer will have a linter that will tell them incase they somehow made that mistake.
- tombert 7y agoEh, I actually like JS but I have definitely forgotten to add a "var" or "let" a few times, or sometimes I will do it correctly, get a bit overzealous with cutting, and accidentally remove the initial var declaration. I'm not saying that it breaks the language, but it definitely is irritating, especially if you're not using a linter.
- s_y_n_t_a_x 7y agoI come from Lua so I'm used to declaring local variables with "local". Also, I like knowing which variables won't be reassigned (const), and which will (let).
- shakna 7y agoWhilst I do find it irritating, I don't mind about the scope default so much, but I've certainly run into it (forgetting to specify) a lot. Mostly because JS is not the only language that I'll be working with at a time, and if I'm dancing between three or four and they have similar syntax, then mistakes creep in.
- jdminhbg 7y agoThat's all fine, but those are all workarounds for a design mistake in the language.
- s_y_n_t_a_x 7y agoNo it's a choice, apparently people can't have one.