我应该用K&编写javascript时的R样式

Is it true that I should use K&R styling when writing javascript?

本文关键字:javascript 时的 样式 编写 amp 我应该      更新时间:2023-09-26

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

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

因此,我的问题

  • allman风格真的会因为javascript中花括号的位置?jquery怎么样?

  • 有什么技巧可以让我使用奥尔曼风格吗不会因为花括号而出现问题?

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

allman风格真的会因为位置而导致错误吗javascript中的花括号?

是的。正如您的链接所解释的,return语句后面跟着一个换行符会在解析器试图插入分号时混淆解析器。不过,这种行为并不局限于返回对象文字。以下功能:

function foo()
{
    return
        "bar";
}

也将返回undefined

jquery怎么样?

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

有什么技巧可以让我在没有由于花括号引起的问题?

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

var foo =
{
    bar: "quux"
};

或者你会选择:

var foo = {
    bar: "quux"
};

IMHO第二个片段比第一个片段更可读。您可以继续使用Allman样式,并在forifwhilefunction等中使用大括号,但对象文字除外。

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

return是一个非常特殊的情况,因为无论有没有自变量,它都是有效的。当在一行中遇到一个单独的return语句时,解析器无法判断是应该添加分号以使单行语句有效,还是继续到下一行并希望一切顺利。

因此,我认为这种行为只会成为returnthrow的问题,而不是其他语句的问题。

请记住关于自动分号插入的ECMAScript规范:

某些ECMAScript语句(空语句、变量语句、,表达式语句do-while语句continue语句break语句、return语句throw语句)必须终止使用分号。此类分号可能总是显式出现在源文本但是,为了方便起见,可以省略这些分号在某些情况下来自源文本。这些情况是通过说分号自动插入在这些情况下的源代码令牌流。

我嘲笑上面的建议是"方便"。。。

虽然从技术上讲,在上述未涵盖的情况下,您可以继续使用Allman格式,但我会提倡一致性。就我个人而言,我是GoogleJS风格指南的粉丝——与你的问题相关的部分是代码格式和分号。这里列出的例子值得一看。