• foggy@lemmy.world
    link
    fedilink
    arrow-up
    9
    arrow-down
    1
    ·
    7 months ago
    try {
      const joke = allProgrammingJokes[Math.floor(Math.random() * allProgrammingJokes.length)];
      if (!getJoke(joke)) {
        throw new Error("Joke not understood");
      }
    } catch (error) {
      console.log("lol *upvotes*");
    }
    
    function getJoke(joke) {
      // This function is intentionally flawed to always return false.
      // It's a part of the joke!
      return false;
    }
    
    • puppy@lemmy.world
      link
      fedilink
      arrow-up
      8
      ·
      7 months ago

      allProgrammingJokes[Math.floor(Math.random() * allProgrammingJokes.length)]

      This might throw array index out of bounds errors.

      • kionay@lemmy.world
        link
        fedilink
        English
        arrow-up
        9
        ·
        7 months ago

        ECMAScript spec says Math.random must be less than 1. I was about to stop there, but a thought occurred to me: could the multiply with a float make a number large enough to floor to a different value for large enough values? 🤔

        I imagine it’d have to be a ridiculously large number to amount enough floating point imprecision to matter, if so.