Is this a problem with ASI or just the return grammar?

前端 未结 2 1921
一个人的身影
一个人的身影 2021-01-19 23:29

People often talk about JavaScript\'s nasty ASI (Automatic Semicolon Insertion), and often cite this example...

function a() {
    return [
        \'a\',
           


        
相关标签:
2条回答
  • 2021-01-19 23:43

    There's nothing in the spec that says a return value has to be on the same line as a return statement, it's just bad semi-colon insertion.

    0 讨论(0)
  • 2021-01-19 23:51

    I don't think there's a semicolon "inserted". It's just that there's a parse ambiguity there, and the resolution is to treat the "return" and the following expression as two separate statements. I understand why it makes sense from a purely grammatical standpoint, but it seems like a weird decision in the specific case of the "return" statement as the decision is guaranteed to leave a never-executed orphan expression statement dangling after it.

    I wonder how many aggregate SO rep points that trick has generated?

    edit 04 Apr 2014 — technically that decision to split the statement into two statements is called "semicolon insertion". Nobody actually sees the inserted semicolon; it's a figment of the parser's imagination :) The effect is the same whatever you call it.

    0 讨论(0)
提交回复
热议问题