• xor@infosec.pub
    link
    fedilink
    English
    arrow-up
    9
    arrow-down
    2
    ·
    11 months ago

    you should see the “is_odd” package…

    it’s like, return (num%2)? true:false

    • 𝘋𝘪𝘳𝘬
      link
      fedilink
      English
      arrow-up
      12
      arrow-down
      1
      ·
      11 months ago

      People using this deserve that their code breaks. Absolutely ridiculous.

      Neither this, nor the leftpad thing, nor this is-even “package” are things I would even think about for a second before just writing it on my own. I wouldn’t even consider those features (let alone packages to depend my code on!) but basic programming.

      • Ephera
        link
        fedilink
        English
        arrow-up
        8
        ·
        11 months ago

        Problem is when you accidentally pull it in as a transitive dependency…

        • 𝘋𝘪𝘳𝘬
          link
          fedilink
          English
          arrow-up
          7
          ·
          11 months ago

          Yeah :( This also is why such nonsense “breaks the Internet” …

      • xor@infosec.pub
        link
        fedilink
        English
        arrow-up
        5
        arrow-down
        1
        ·
        11 months ago

        i just don’t see how npm is letting this happen…
        im going to write an npm module called “true” that just returns true…

      • xor@infosec.pub
        link
        fedilink
        English
        arrow-up
        2
        arrow-down
        1
        ·
        11 months ago

        well although 1 evaluates as true and zero as false, it’s not the same thing…
        so yes, i did…

    • 50gp@kbin.social
      link
      fedilink
      arrow-up
      3
      arrow-down
      1
      ·
      edit-2
      11 months ago

      at which point do you blame the language for not implementing it natively?

      • 𝘋𝘪𝘳𝘬
        link
        fedilink
        English
        arrow-up
        6
        ·
        11 months ago

        at which point do you blame the language for not implementing it natively?

        Erm … What more native than number % 2 do you want to have it?

        • Ephera
          link
          fedilink
          English
          arrow-up
          2
          arrow-down
          5
          ·
          edit-2
          11 months ago

          2.is_even()

          (I don’t know, if this is possible in JS.)

          • 𝘋𝘪𝘳𝘬
            link
            fedilink
            English
            arrow-up
            4
            ·
            11 months ago

            Let’s call the number variable just x, you then have literal math (Euclidean division) if you ignore === instead of = for equals.

            x % 2 === 0
            

            This can’t get better or more native than “just math”. This is the whole code you need to detect if a number is even. I wouldn’t even call it “code”.

            If you remove whitespaces and ignore the type you end up with x%2==0 which is 6 characters long and a fully valid if clause. No magic involved, no abstraction, no weird function calls on integers …

            I see that in modern JS this type of coding is a trend, but you can’t tell me you want to replace 6 characters with an own module or a package. :)

            • Ephera
              link
              fedilink
              English
              arrow-up
              1
              arrow-down
              2
              ·
              11 months ago

              No, I want that in the std lib. Yes, it would just call x % 2 == 0 underneath. But the advantage is readability. I’m in principle aware that x % 2 == 0 is true when the number is even, but I need it seldomly enough that I do still need to think about it for a second before I know for sure. I don’t need to think about x.is_even(). And the readability is what I want natively, i.e. in the std lib.

              It being in the std lib would also sidestep your concerns about security or the function call having unknown side effects.

      • Aatube@kbin.social
        link
        fedilink
        arrow-up
        6
        ·
        edit-2
        11 months ago

        Isn’t %2 already native?

        (BTW this thing failed JavaScript so hard ECMA immediately included it in that year’s standard)