我记得有一个约定/建议将开括号放在同一行,因为JavaScript添加分号或其他东西的方式。
//OK
function blah(){
};
//Probably not OK
function blah()
{
};
但我没有找到相关来源来确认/否认这一点。
这是真的吗?或者只是一个神话?
答案 0 :(得分:24)
您正在考虑的问题是return
语句。
return {
value: 'test'
}
工作正常,但以下情况并非如此:
return
{
value: 'test'
}
在return
将上述内容转换为:
return;
{
value: 'test'
}
答案 1 :(得分:6)
This post on Elegant Code给出了自动分号插入的一些解释,但是关于返回对象,而不是声明函数。
答案 2 :(得分:6)
“我总是使用K& R风格,将{放在一行而不是前面,因为它避免了JavaScript的返回声明中可怕的设计错误。
他所指的错误是JavaScript如何在以下两种情况下以不同方式处理return语句:
return {
'status': 'ok'
};
......和:
return
{
'status': 'ok'
};
第一个将返回一个具有status属性的对象,而后者将因分号插入而返回undefined。“
[1] Douglas Crockford:JavaScript:The Good Parts:Style(p.96)
答案 3 :(得分:5)
JavaScript Garden有一章关于automatic semicolon insertion。当自动添加分号时,它给出了很好的例子:
JavaScript不是分号 语言,它实际上需要 用分号来理解 源代码。因此JavaScript 解析器自动插入它们 每当遇到解析错误时 由于缺少分号。
在您的示例中,由于缺少分号,JavaScript不会遇到错误。
答案 4 :(得分:3)
声明函数没有问题,但在返回对象时可能会遇到麻烦:
function foo()
{ // this is OK
return
{ // this is BAD!
name: "bletch"
};
// actually returns undefined!
}
在return语句后会自动插入一个分号,这会破坏你的代码。
答案 5 :(得分:-1)
这是一个神话。 function blah()
始终需要后跟表达式块,因此您使用的样式没有区别。第一种风格是最广泛使用的形式。