我不记得在哪里,但最近我通过了评论,其中用户告诉1TBS比JavaScript中的Allman更受欢迎,并且说Allman在JavaScript中有危险的含义。
这是一个有效的陈述吗?如果是这样,为什么?
答案 0 :(得分:20)
return
之后不能有LineTerminator
:
return
{
};
被视为return;
(返回undefined
)而不是return {};
(返回对象)
有关详情,请参阅Automatic Semicolon Insertion (ASI)
的规则。
答案 1 :(得分:3)
这是一份有效的陈述。
因为JavaScript的引擎具有所谓的ASI(自动分号插入),如果需要在行返回时插入分号。 “如有必要”是模棱两可的;有时它有效,有时则无效。请参阅the rules。
所以,正如其他答案所说:
return
{
};
// Is read by the JavaScript engine, after ASI, as:
return; // returns undefined
{ // so this is not even executed
};
所以不推荐用于return
语句。
但是,如果您的指南推荐Allman样式用于函数声明,那就完全没问题了。我知道有些事情。
答案 2 :(得分:2)
我认为这取决于声明。例如,如果open brace在新行上,则return语句可能会被破坏。 More info here
答案 3 :(得分:2)
return {
a: "A",
b: "B"
};
// vs.
return // Semicolon automatically inserted here! Uh oh!
{
a: "A",
b: "B"
}