直到最近我才意识到这一点,但在编写javascript代码时我使用了Allman style。
根据http://encosia.com/in-javascript-curly-brace-placement-matters-an-example/,我应该使用K&R style。这是因为在某些情况下,将花括号放在下一行会导致问题。 对我来说,问题是我变得非常喜欢奥尔曼的风格而宁愿不改变。
所以,我的问题
allman风格是否会导致错误 在javascript中放置大括号? jquery怎么样?
是否有任何技巧可以让我使用Allman风格 由于大括号没有问题?
使用这些样式是否还有其他问题?
答案 0 :(得分:8)
allman风格是否会因放置而导致错误 javascript中的花括号?
是的,确实如此。正如您的链接所解释的那样,return
语句后跟换行符会使解析器在尝试插入分号时感到困惑。但是,此行为不仅限于返回对象文字。以下功能:
function foo()
{
return
"bar";
}
还会返回undefined
。
jquery怎么样?
无论是否包含jQuery,情况都完全相同。
是否有任何技巧可以让我在没有的情况下使用Allman风格 大括号引起的问题?
是的,不要将Allman风格与对象文字一起使用。考虑您要将对象文字分配给变量。你真的要写:
var foo =
{
bar: "quux"
};
或者你会选择:
var foo = {
bar: "quux"
};
恕我直言,第二个片段比第一个片段更具可读性。您可以使用for
,if
,while
,function
等内的大括号继续使用Allman样式,但是对象文字会例外。
使用这些样式是否还有其他问题?
return
是一个非常特殊的情况,因为它有或没有参数都有效。当在一行上遇到单独的return
语句时,解析器无法判断是否应该添加分号以使单行语句有效,或者继续下一行并希望获得最佳。
出于这个原因,我认为这种行为只会成为return
和throw
的问题,而不是其他陈述。
答案 1 :(得分:2)
请记住ECMAScript specification regarding automatic semicolon insertion:
某些ECMAScript语句(空语句,变量语句, 表达式语句,
do-while
语句,continue
语句,break
声明,return
声明和throw
声明)必须终止 用分号。这样的分号可能总是明确地出现在 源文本。然而,为了方便起见,可以省略这样的分号 来自某些情况下的源文本。这些情况是 描述说分号是自动插入的 这些情况下的源代码令牌流。
我嘲笑上面的建议是“方便”......
虽然你在技术上可以继续使用Allman格式,但在上面没有涉及的情况下,我会传播一致性。就个人而言,我是Google JS styleguide的粉丝 - 与您的问题相关的部分是code formatting和semicolons部分。这里列出的例子值得一试。