• Phoenixz@lemmy.ca
    link
    fedilink
    arrow-up
    1
    ·
    3 days ago

    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

    • Shanmugha@lemmy.world
      link
      fedilink
      arrow-up
      1
      ·
      edit-2
      3 days ago

      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

      • Phoenixz@lemmy.ca
        link
        fedilink
        arrow-up
        2
        ·
        1 day ago

        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

        • Shanmugha@lemmy.world
          link
          fedilink
          arrow-up
          1
          ·
          edit-2
          6 hours ago

          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