this post was submitted on 16 May 2025
712 points (99.2% liked)
Programmer Humor
23432 readers
233 users here now
Welcome to Programmer Humor!
This is a place where you can post jokes, memes, humor, etc. related to programming!
For sharing awful code theres also Programming Horror.
Rules
- Keep content in english
- No advertisements
- Posts must be related to programming or programmer topics
founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
JavaScript sucks but I'll give it this one
Arrays are complex structures with multiple values. Just because one looks like the other doesn't make them the same object. It's like taking two new objects form the same class, they look the same but work independently from eachother. I can add a value to one and the other would be unaffected, they'd both still be the same class
And I can't take this one. I did not ask if an object referenced by a is the same object referenced by b, I asked if two empty collections of values are equal. And an empty bag can easily be substituted by another empty bag, there is no class/instance tricky business here. And the fact that in JS arrays are objects is again JS-specific insanity. Still I thank you for sharing your thoughts
Well it's what you'd want but not what it does, for one, but for another: comparing scalars is very easy, comparing complex structures is not. To compare one array with another you'd need to iterate over each element, recursively.
That JavaScript handles arrays as objects is also not bad, that's just a language feature that you may like or not, not much can go wrong there. The reassignment of "this" or how JS handlesnumber comparison, yeah, that is infuriatingly bad
Yeah. JS is okay with lots of funny (and not fun) type coercions (toString on everything? really?), has no notion of reference as data type, but somehow automatic iteration on array by "==" operator is too much
You are right, that's not want I would want from it, it is bad, I will never like that. And you are also right there are things even worse than this, no question there
Edit: "implementing iteration on == would have been too much" is an invalid argument, if anyone had doubts
collapsed inline media