3

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

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

萤火虫给我:

SyntaxError: invalid label

如果我将其更改为:

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

会好的,谁能告诉我这两个返回语句之间的区别是什么?

4

2 回答 2

7

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

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

它被称为自动分号插入:当 JavaScript 解析器看到一个看似完整但缺少分号的语句时,它会尝试“修复”它。

是的,即使有时很有帮助,也可能很烦人。这篇文章详细解释了这个 JavaScript 特性。

于 2012-10-02T09:12:09.217 回答
1

哈哈,这是经典的;)

Javasript 中断

return
{

因为它被视为{一个新块并隐式插入分号:

return;
{

因此返回未定义:-D

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

实际上,这就是为什么在 Javascript 中你总是应该避免使用这些换行符并编写:

copyOffset : function( index ){
    return{
        x : index, y : index
    };
}
于 2012-10-02T09:13:30.500 回答