我应该用K&编写javascript时的R样式
Is it true that I should use K&R styling when writing javascript?
直到最近我才意识到这一点,但我在编写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样式,并在for
、if
、while
、function
等中使用大括号,但对象文字除外。
使用这些样式还有其他问题吗?
return
是一个非常特殊的情况,因为无论有没有自变量,它都是有效的。当在一行中遇到一个单独的return
语句时,解析器无法判断是应该添加分号以使单行语句有效,还是继续到下一行并希望一切顺利。
因此,我认为这种行为只会成为return
和throw
的问题,而不是其他语句的问题。
请记住关于自动分号插入的ECMAScript规范:
某些ECMAScript语句(空语句、变量语句、,表达式语句
do-while
语句continue
语句break
语句、return
语句和throw
语句)必须终止使用分号。此类分号可能总是显式出现在源文本但是,为了方便起见,可以省略这些分号在某些情况下来自源文本。这些情况是通过说分号自动插入在这些情况下的源代码令牌流。
我嘲笑上面的建议是"方便"。。。
虽然从技术上讲,在上述未涵盖的情况下,您可以继续使用Allman格式,但我会提倡一致性。就我个人而言,我是GoogleJS风格指南的粉丝——与你的问题相关的部分是代码格式和分号。这里列出的例子值得一看。
- 使用JavaScript从超链接加载时的默认下拉值
- 将jQuery转换为用户脚本的普通Javascript时遇到问题
- 单击p元素时的javascript触发事件
- 比较Javascript中的两个字符串时出错
- 我应该用K&编写javascript时的R样式
- 删除评估值Javascript时的错误
- 使用 javascript 时的图像缓存
- 在Chrome中评测Javascript时的奇怪功能
- 在ASP.Net中运行javascript时的执行顺序
- 禁用 JavaScript 时的 css 回退
- 禁用 Javascript 时的幻灯片
- 单击javascript时的删除按钮
- 按下 Enter JavaScript 时的事件
- PHP 字符串包含打印 Javascript 时的换行符问题
- 下载javascript时的图像名称
- 禁用 Javascript 时的 Ajax 回退
- 我怎样才能让emacs区分我在编写PHP、HTML和JavaScript时的不同之处?
- 解析文本为int javascript时的奇怪行为
- 尝试使用jQuery获取javascript时的TextField值为空
- 理解将C#转换为JavaScript时的JavaScript继承