在编写javascript时我应该使用K&R样式吗?

Try*_*der 12 javascript jquery styling curly-brackets

直到最近我才意识到这一点,但在编写javascript代码时我使用了Allman风格.

根据http://encosia.com/in-javascript-curly-brace-placement-matters-an-example/,我应该使用K&R风格.这是因为在某些情况下,将花括号放在下一行会导致问题.对我来说,问题是我变得非常喜欢奥尔曼风格而宁愿不改变.

所以,我的问题

  • 是不是因为在javascript中放置大括号,allman样式会导致错误?jquery怎么样?

  • 是否有任何技巧可以让我使用Allman风格而不会因花括号而出现问题?

  • 使用这些样式是否还有其他问题?

Fré*_*idi 8

是不是因为在javascript中放置大括号,allman样式会导致错误?

是的.正如您的链接所解释的那样,return换行符后面的语句会在尝试插入分号时混淆解析器.但是,此行为不仅限于返回对象文字.以下功能:

function foo()
{
    return
        "bar";
}
Run Code Online (Sandbox Code Playgroud)

也会回来undefined.

jquery怎么样?

无论是否包含jQuery,情况都完全相同.

是否有任何技巧可以让我使用Allman风格而不会因花括号而出现问题?

是的,不要将Allman样式与对象文字一起使用.考虑您要将对象文字分配给变量.你真的要写:

var foo =
{
    bar: "quux"
};
Run Code Online (Sandbox Code Playgroud)

或者你会去:

var foo = {
    bar: "quux"
};
Run Code Online (Sandbox Code Playgroud)

恕我直言,第二个片段比第一个片段更具可读性.您可以继续使用奥尔曼风格,里面的大括号for,if,while,function,等,但破例为对象文本.

使用这些样式是否还有其他问题?

return是一个非常特殊的情况,因为它有或没有参数是有效的.当return在一行上遇到单独的语句时,解析器无法判断是否应该添加分号以使单行语句有效,或者继续下一行并希望获得最佳.

出于这个原因,我认为这种行为只会成为一个问题,returnthrow不是其他陈述.