提问人:Mike 提问时间:10/2/2012 最后编辑:TedMike 更新时间:10/2/2012 访问量:896
javascript: 为什么这个return语句会导致语法错误?
javascript: Why does this return statement cause a syntax error?
问:
我正在使用 Apatana 3,我稍微修改了 JS 代码格式化程序以使其看起来更清晰,下面是格式化后的代码,它给了我一个错误:
copyOffset : function( index )
{
return
{
x : index, y : index
};
}
Firebug给我:
SyntaxError: invalid label
如果我把它改成:
copyOffset : function( index )
{
return{
x : index, y : index
};
}
没事,有人能告诉我这两个 return 语句有什么区别吗?
答:
7赞
raina77ow
10/2/2012
#1
不同之处在于,第一个片段实际上被解释为......
copyOffset : function( index )
{
return;
{
x : index, y : index
};
}
它被称为自动插入分号:当 JavaScript 解析器看到一个看似完整的语句,但缺少分号时,它会尝试“修复”它。
是的,尽管有时很有帮助,但它可能很烦人。本文详细介绍了此 JavaScript 功能。
评论
0赞
Mike
10/2/2012
感谢您的输入,我来自 java,我喜欢在开始块时换行,我想我必须回去更改我的格式。我认为JS有点出乎意料。
1赞
Christoph
10/2/2012
#2
哈哈,这是经典的;
Javasript 中断
return
{
因为它被视为一个新块并隐式插入分号:{
return;
{
从而返回 undefined:-D
问题是 Javasript 在语句有意义的行尾插入分号。由于可以独立存在,Javascript 将其解释为一个完整的语句并插入分号,从而破坏您的代码。return
实际上,这就是为什么在 Javascript 中你总是应该避免这些换行符并编写:
copyOffset : function( index ){
return{
x : index, y : index
};
}
评论