• 3abas@lemm.ee
    link
    fedilink
    arrow-up
    11
    arrow-down
    5
    ·
    3 days ago

    It’s not nonsensical, implicit type coercion is a feature of JavaScript, it’s perfectly logical and predictable.

    JavaScript is a filthy beast, it’s not the right tool for every job, but it’s not nonsensical.

    When you follow a string with a +, it concatenates it with the next value (converted to string if needed). This makes sense, and it’s a very standard convention in most languages.

    Applying arithmetic to a string would be nonsensical, which they don’t do.

      • 3abas@lemm.ee
        link
        fedilink
        arrow-up
        3
        arrow-down
        1
        ·
        3 days ago

        Sure. And you’re entitled to yours. But words have meaning and this isn’t MY OPINION, it’s objective reality. It follows strict rules for predictable output, it is not nonsensical.

        You’re entitled to think it’s nonsense, and you’d be wrong. You don’t have to like implicit type coercion, but it’s popular and in many languages for good reason…

        Language Implicit Coercion Example
        JavaScript '5' - 1 → 4
        PHP '5' + 1 → 6
        Perl '5' + 1 → 6
        Bash $(( '5' + 1 )) → 6
        Lua "5" + 1 → 6
        R "5" + 1 → 6
        MATLAB '5' + 1 → 54 (ASCII math)
        SQL (MySQL) '5' + 1 → 6
        Visual Basic '5' + 1 → 6
        TypeScript '5' - 1 → 4
        Tcl "5" + 1 → 6
        Awk '5' + 1 → 6
        PowerShell '5' + 1 → 6
        ColdFusion '5' + 1 → 6
        VBScript '5' + 1 → 6
        ActionScript '5' - 1 → 4
        Objective-J '5' - 1 → 4
        Excel Formula "5" + 1 → 6
        PostScript (5) 1 add6

        I think JavaScript is filthy, I’m at home with C#, but I understand and don’t fear ITC.

        • raspberriesareyummy@lemmy.world
          link
          fedilink
          arrow-up
          4
          arrow-down
          2
          ·
          2 days ago

          Also, you contradicted yourself just then and there. Not a single of your examples does string concatenation for these types. It’s only JS

          • bss03@infosec.pub
            link
            fedilink
            English
            arrow-up
            3
            ·
            2 days ago
            • In https://lemm.ee/comment/20947041 they claimed “implicit type coercion” and showed many examples; they did NOT claim “string concatenation”.
            • However, that was in reply to https://lemmy.world/comment/17473361 which was talking about “implicit conversion to string” which is a specific type of “implicit type coercion”; NONE of the examples given involved a conversion to string.
            • But also, that was in reply to https://lemm.ee/comment/20939144 which only mentions “implicit type coercion” in general.

            So, I think probably everyone in the thread is “correct”, but you are actually talking past one another.

            I think the JS behavior is a bad design choice, but it is well documented and consistent across implementations.

            • raspberriesareyummy@lemmy.world
              link
              fedilink
              arrow-up
              1
              arrow-down
              2
              ·
              2 days ago

              Read the thread again, it seems you slipped somewhere. This was all about the claim that implicit conversion to string somehow could make sense.