| And where would JavaScript not handle them in a way people don't expect them to be handled? Comparing Python's handling of semicolons with JavaScript's ASI, you get the following: -- End of statements Python and JavaScript: Ends with either a new line or a semicolon. -- Line joining Python: whitespace strict, so lines must be either explicitly joined through the `\' escape character, or put inside a parenthesized expression, which ignores whitespace. JavaScript: non-whitespace strict, so lines don't need to be explicitly joined. Statements may be continued by starting the following line with a continuation token (one of: `[ ( + - /') -- Exceptions Python: Parenthesized expressions use a different parser state (ie.: whitespace strict vs non-whitespace strict) JavaScript: restricted production grammar usually have optional expressions following them, and since they are a valid statement on their own, the statement will be ended with a new line. So, the related information must start in the same line. Restricted productions are: return, break and continue; Post-fix and prefix operators are included as restricted productions for readability's sake. I fail to see how that's difficult to remember, or how that's insanely more complex than Python's rules... |