• Ethan@programming.dev
    link
    fedilink
    English
    arrow-up
    52
    ·
    8 个月前

    Sure. But in a sane language doing something totally nonsensical like that is an error, and in a statically typed language it’s a compiler error. It doesn’t just silently do weird shit.

    • morgunkorn
      link
      fedilink
      arrow-up
      13
      arrow-down
      1
      ·
      8 个月前

      Agreed! Unfortunately these maddening behaviors were kind of set in stone several decades ago, and it has been (correctly) decided “Don’t break the web”, these weird quirks are kept in modern interpreters/compilers.

      It’s actually quite interesting to read through the logic to follow when implementing an interpreter:

      https://262.ecma-international.org/13.0/#sec-object.prototype.tostring

      • Ethan@programming.dev
        link
        fedilink
        English
        arrow-up
        1
        ·
        edit-2
        8 个月前

        I thought it was clear I was saying JavaScript is not a sane language for this very reason

      • Ethan@programming.dev
        link
        fedilink
        English
        arrow-up
        3
        ·
        8 个月前

        I was trying to make a point without starting a flamewar that was beside the point. Personally I’d never choose a dynamically typed language for a production system. That being said, Python and Ruby complain if you try to add an array, dict/hashmap, string, or number to another (of a different type) so they’re certainly more sane than JavaScript.

      • Lime66@lemmy.world
        link
        fedilink
        arrow-up
        1
        ·
        7 个月前

        Any of them which are still strongly typed. Just because a language doesn’t check for type errors before runtime doesn’t mean it won’t check at all