javascript:为什么这个return语句会导致语法错误?

时间:2012-10-02 09:09:48

标签: javascript aptana3

我使用Apatana 3,我修改了JS代码格式化程序,让它看起来更清晰,下面是格式化后的代码,它给我一个错误:

    copyOffset : function( index )
    {
        return
        {
            x : index, y : index
        };
    }
萤火虫给我:

SyntaxError: invalid label

如果我将其更改为:

    copyOffset : function( index )
    {
        return{
            x : index, y : index
        };
    }

没关系,谁能告诉我这两个回复陈述之间的区别是什么?

2 个答案:

答案 0 :(得分:7)

不同之处在于第一个片段实际上被解释为......

copyOffset : function( index )
{
    return;
    {
        x : index, y : index
    };
}

它被称为Automatic Semicolon Insertion:当JavaScript解析器看到一个似乎完整的语句但是错过了分号时,它会尝试“修复”它。

是的,尽管有时候很有帮助,但它可能会很烦人。 This article详细解释了此JavaScript功能。

答案 1 :(得分:1)

哈哈,这是一个经典的;)

Javasript打破了

return
{

因为它将{视为新块并且隐含地插入分号:

return;
{

因此返回undefined:-D

问题是当语句有意义时,Javasript在一行的末尾插入一个分号。由于return可以独立存在,Javascript会将其解释为完整的语句并插入分号,从而破坏您的代码。

实际上,这就是原因,为什么在Javascript中你总是应该避免这些换行并写下:

copyOffset : function( index ){
    return{
        x : index, y : index
    };
}