我真的应该使用K&;在编写javascript时如何进行R样式化?

我真的应该使用K&;在编写javascript时如何进行R样式化?,javascript,jquery,styling,curly-brackets,Javascript,Jquery,Styling,Curly Brackets,直到最近我才意识到这一点,但我在编写javascript代码时使用了 根据我应该使用的。这是因为在某些情况下,将花括号放在下一行可能会导致问题。 对我来说,问题是我越来越喜欢奥尔曼的风格,也不愿意改变 所以,我的问题 allman样式是否确实会由于错误而导致错误 javascript中花括号的位置?jquery怎么样 有什么技巧可以让我使用奥尔曼风格吗 没有问题,因为花括号 使用这些样式是否还有其他问题 allman样式是否会因放置而导致错误 javascript中花括号的定义 是的。正如您

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

根据我应该使用的。这是因为在某些情况下,将花括号放在下一行可能会导致问题。 对我来说,问题是我越来越喜欢奥尔曼的风格,也不愿意改变

所以,我的问题

  • allman样式是否确实会由于错误而导致错误 javascript中花括号的位置?jquery怎么样

  • 有什么技巧可以让我使用奥尔曼风格吗 没有问题,因为花括号

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

allman样式是否会因放置而导致错误 javascript中花括号的定义

是的。正如您的链接所解释的那样,
return
语句后跟换行符将使解析器在尝试插入分号时感到困惑。不过,这种行为并不限于返回对象文本。以下功能:

function foo()
{
    return
        "bar";
}
还将返回未定义的

jquery怎么样

无论是否包含jQuery,情况都是一样的

有没有什么技巧可以让我不用担心就使用奥尔曼风格 由于花括号引起的问题

是的,不要对对象文字使用Allman样式。考虑将对象文本分配给变量。你真的要写:

var foo =
{
    bar: "quux"
};
或者你会选择:

var foo = {
    bar: "quux"
};
IMHO第二个代码段比第一个更可读。您可以继续使用Allman样式,在
for
if
while
function
等中使用大括号,但对象文字除外

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

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

出于这个原因,我认为这种行为只会成为
return
throw
的问题,而不是其他语句的问题。

请记住:

某些ECMAScript语句(空语句、变量语句、, 表达式语句,
do while
语句,
continue
语句,
break
语句,
返回
语句
抛出
语句)必须终止 用分号。这样的分号可能总是显式出现在 源文本。然而,为了方便起见,可以省略这些分号 在某些情况下从源文本中删除。这些情况是 描述为分号自动插入到 这些情况下的源代码令牌流

我笑了笑上面的建议,它是“方便”


虽然从技术上讲,您可以在上面没有提到的情况下继续使用Allman格式,但我要提倡一致性。就我个人而言,我是一个粉丝-与你的问题相关的部分是和。这里列出的示例值得一看。

我想这取决于返回object Literal的频率。除了可读性之外,我看不到可能出现的任何问题。然而,K&R对我来说似乎更有意义,因为我经常在函数调用中声明函数和/或对象(例如,
setTimeout(1000,function(){complex_functions_content});
复杂函数的内容将在新行和右括号中(卷曲和圆括号)在最后一行,与setTimeout函数调用处于相同的缩进级别。使用Allman样式编写这样的代码看起来很奇怪。无论如何,我并不认为return是一个控制语句,所以我觉得Allman样式首先应该调用示例中有问题的代码似乎很奇怪。作为一个附带问题,它确实是这样自动分号插入发生在“return”之后以外的任何位置在哪里它同样会破坏预期的行为?是的,它会引起一场火焰战,就像它已经有几百次了一样。就在今天早上,我实际上读到一条评论,告诉海报使用制表符或4格缩进,这对我来说是非常愚蠢的,除了技术之外,我认为只是看起来更漂亮。这种行为是符合规范和@o.v,在实践中,
continue
break
采用可选标识符,而不是对象文本。
do…while
只会在
while
计算对象文本时产生问题,而
计算对象文本可以说是实现无限循环的一种非常复杂的方式。您关于
throw
的观点站得住脚,虽然,即使抛出对象文字在我的经验中是非常罕见的。我并没有真正关注OP的特定场景(用括号括起来),而是关注一个人通常无法在这些语句后断行(即no
continue
↵<代码>[标签]
,duh),但在条件语句等之后,一个人可以随心所欲地断行。对象文字部分不再相关——所有现代浏览器和node.js都接受以Allman样式编写的对象。@Frédéric,我写了你的第二段,在分配对象时使用Allman样式是可以的。只有在
r之后才应该避免使用Allman样式eturn
或者
throw
——你文章的这一部分仍然有效。