Allman风格在JavaScript中的危险含义

时间:2012-06-28 14:54:09

标签: javascript code-formatting

我不记得在哪里,但最近我通过了评论,其中用户告诉1TBS比JavaScript中的Allman更受欢迎,并且说Allman在JavaScript中有危险的含义。

这是一个有效的陈述吗?如果是这样,为什么?

4 个答案:

答案 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"
}