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, because undefined 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.
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.
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.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
Not a JS dev either but
===
.Not really sure what the
(+x)
is aboutThis 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.