我使用Apatana 3,我修改了JS代码格式化程序,让它看起来更清晰,下面是格式化后的代码,它给我一个错误:
copyOffset : function( index )
{
return
{
x : index, y : index
};
}
萤火虫给我:
SyntaxError: invalid label
如果我将其更改为:
copyOffset : function( index )
{
return{
x : index, y : index
};
}
没关系,谁能告诉我这两个回复陈述之间的区别是什么?
答案 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
};
}