this post was submitted on 08 Mar 2024
474 points (98.2% liked)
Programmer Humor
32380 readers
1313 users here now
Post funny things about programming here! (Or just rant about your favourite programming language.)
Rules:
- Posts must be relevant to programming, programmers, or computer science.
- No NSFW content.
- Jokes must be in good taste. No hate speech, bigotry, etc.
founded 5 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
x % 2 == 0
If you forget for a second it's Javascript, the language will turn back and bite you.
(+x) % 2 === 0
I am not good friends with js, what did I miss?
JS is a language where
[1,2,11].sort()
returns[1,11,2]
.And if you use a variable instead of a bare array, half the functions are side-effectful, as determined by coin toss.
And if you try declaring that variable with
new Array(3).map()
then it will ignore all 3 indices, becauseundefined
is real enough to be enumerated, but not real enough to be iterated, because, and I cannot overstress the importance of this principle in Javascript, go fuck yourself. Go fuck yourself is why.typeof(null) == 'object'
Because some people think planning an entirely new language should take less than 2 weeks. 10 days, in this case.
See wat for more.
Array(3)
doesn't create[undefined, undefined, undefined, ]
; it creates[/* hole */, /* hole */, /* hole */, ]
. The holes don't set any property on the array whatsoever, so they are skipped when iterating. How this makes sense, I can't tell you.Yet the array contains exactly three nothings.
It's like a zen koan.
Time is a flat circle
We wrote it wrong on purpose, as a joke.
The Wimp Lo doctrine is a valid theory for why JS is Like That.
If there's two ways to do something, JS picks all three.
This evaluates to NaN for some reason:
Since JS doesn't really differentiate strings from numbers, except on the places it does, it makes sense to make sure you are working with numbers.
Oh right that. I guess I was visualizing a scenario where you already checked for it being a number, such as a Number.isInteger(x)
also, that suprises me a lot, you'd think this is one of the places where it treats stuff as numbers
Not a JS dev either but
===
.Not really sure what the
(+x)
is aboutthe remainder operator should return a number or a NaN right? do we actually need the triple here?
Not really. But with JS it's better safe than sorry.
The GP's addition is unnecessary, but I fully support anyone that decides to do it.
point taken!
what does the +x do.
It makes sure
x
is a number.what a wonderful and beautiful language. i’m so glad i asked
And so wonderfully similar to the way that symbol is used in other languages as well. Gosh darn it I love JavaScript