JavaScript 中 Allman 风格的危险含义

IT技术 javascript code-formatting
2021-01-31 13:10:14

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

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

4个回答

return不能LineTerminator在它之后所以:

return
{


};

被视为return;(return undefined) 而不是return {};(return an object)

查看更多规则Automatic Semicolon Insertion (ASI)

也许说它与 ASI 有关是对答案的一个加分?
2021-04-01 13:10:14
我已经变得非常喜欢 javascript,但这仍然很奇怪
2021-04-01 13:10:14
@FlorianMargaine 给我一点时间
2021-04-09 13:10:14
关于使用分号的一个很好的快速咆哮。转述:Semicolons are required in JavaScript; they’re just not required in YOUR JavaScript.
2021-04-11 13:10:14

这是一个有效的声明。

因为 JavaScript 的引擎有所谓的 ASI(自动分号插入),它会在必要时在行返回时插入分号。“如有必要”是模棱两可的;有时它起作用有时不起作用。规则

所以,正如其他答案中所说:

return
{
};

// Is read by the JavaScript engine, after ASI, as:
return; // returns undefined
{ // so this is not even executed
};

所以不推荐用于return语句。

但是,如果您的指南推荐函数声明的 Allman 风格,那完全没问题。我知道一些这样做。

我认为这取决于声明。例如,如果左大括号在新行上,则 return 语句可能会被破坏。 更多信息在这里

return {
    a: "A",
    b: "B"
};

// vs.

return // Semicolon automatically inserted here! Uh oh!
{
    a: "A",
    b: "B"
}