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

时间:2012-09-02 06:54:05

标签: javascript jquery styling curly-brackets

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

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

所以,我的问题

  • allman风格是否会导致错误 在javascript中放置大括号? jquery怎么样?

  • 是否有任何技巧可以让我使用Allman风格 由于大括号没有问题?

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

2 个答案:

答案 0 :(得分:8)

  

allman风格是否会因放置而导致错误   javascript中的花括号?

是的,确实如此。正如您的链接所解释的那样,return语句后跟换行符会使解析器在尝试插入分号时感到困惑。但是,此行为不仅限于返回对象文字。以下功能:

function foo()
{
    return
        "bar";
}

还会返回undefined

  

jquery怎么样?

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

  

是否有任何技巧可以让我在没有的情况下使用Allman风格   大括号引起的问题?

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

var foo =
{
    bar: "quux"
};

或者你会选择:

var foo = {
    bar: "quux"
};

恕我直言,第二个片段比第一个片段更具可读性。您可以使用forifwhilefunction等内的大括号继续使用Allman样式,但是对象文字会例外。

  

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

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

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

答案 1 :(得分:2)

请记住ECMAScript specification regarding automatic semicolon insertion

  

某些ECMAScript语句(空语句,变量语句,   表达式语句,do-while语句,continue语句,break   声明, return声明throw声明)必须终止   用分号。这样的分号可能总是明确地出现在   源文本。然而,为了方便起见,可以省略这样的分号   来自某些情况下的源文本。这些情况是   描述说分号是自动插入的   这些情况下的源代码令牌流。

我嘲笑上面的建议是“方便”......

虽然你在技术上可以继续使用Allman格式,但在上面没有涉及的情况下,我会传播一致性。就个人而言,我是Google JS styleguide的粉丝 - 与您的问题相关的部分是code formattingsemicolons部分。这里列出的例子值得一试。