Hacker News new | ask | show | jobs
by eastbound 438 days ago
Jokingly, why does Javascript have the semi-colon “;”
2 comments

I really with the semicolon weren't optional. Its "I'll take my best guess" parsing is maddening.

One that keeps killing me is:

    return
        (complicated-multi-line-computation)
Since it can put a semicolon at the end of the first line, it does. Which means the return value is undefined, and the rest of it is just some code that it never actually reaches. A linter will fix that, but I find the usual fix a bit ugly:

    return (
        (complicated multi line computation)
    )
There are a few minor, uncommon edge cases, probably only encountered by minimisers, where automatic semicolon insertion may cause unintentional behaviour, so semicolons are required. One of the specs; https://262.ecma-international.org/7.0/#sec-rules-of-automat... (link from an earlier comment of like) spells it out in detail.
While these edge cases are fairly rare in everyday JS codebases, Typescript adds some, e.g. inline type casts for function calls:

    const foo = someFn()
    (foo as Bar).doSomething()