• jaark@infosec.pub
    link
    fedilink
    English
    arrow-up
    0
    ·
    1 year ago

    I’m no expert and I know that javascript is full of wtf moments, but please… Let it be B

    It’s not gong to be B, it’s it.

    • ImplyingImplications@lemmy.ca
      link
      fedilink
      arrow-up
      2
      ·
      1 year ago

      It is true. Math.min() returns positive Infinity when called with no arguments and Math.max() returns Negative Infinity when called with no arguments. Positive Infinity > Negative Infinity.

      Math.min() works something like this

      def min(numbers):
        r = Infinity
        for n in numbers:
          if n < r:
            r = n
        return r
      

      I’m guessing there’s a reason they wanted min() to be able to be called without any arguments but I’m sure it isn’t a good one.

      • bss03@infosec.pub
        link
        fedilink
        English
        arrow-up
        1
        ·
        1 year ago

        So, the language isn’t compiled (or wasn’t originally) so they couldn’t make min() be an error that only a developer saw, it has to be something that the runtime on the end-user system dealt with. So, it had to be assigned some value. Under those restrictions, it is the most mathematically sound value. It makes miniumum-exactly-2(x, min(<…>)) be exactly the same as min(x, <…>), even when the “<…>” has no values.

        As a developer, I see a lot of value in static analysis, including refusing to generate output for sufficiently erroneous results of static analysis, so I don’t like using JS, and the language that I tinker with will definitely have a separate compilation step and reject the equivalent of min(). But, if I HAD to assign something like that a value, it probably would be a representation of infinity, if we had one (probably will due to IEEE floats).

        HTH